Readme - ZSNES Documentation

The ZSNES Logo

ZSNES v1.51 Documentation

Navigation

  • Index
  • Readme
    • Disclaimer
    • Current Progress
    • Extra Features
    • System Requirements
    • Installation
    • Basic Usage
    • Default Keys
    • Save States
    • Movies
    • IPS Patching
    • Cheat Codes
    • Files
  • GUI
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

Readme

ZSNES is an open-source Super Nintendo Entertainment System emulator written in x86 assembly, C, and C++. Bleeding with cutting edge SNES emulation, ZSNES is easily comparable to other leading SNES emulators, such as Snes9x, SNEeSe, Super Sleuth, and bsnes.

Special thanks to the Snes9x team for all of their help and also for the excellent SNES emulator they have developed. We wish them the very best of luck!

Disclaimer

The ZSNES Development Team, including all developers and contributors, is in no way responsible for any damage caused by the use of this software. Please read the license for more details.

Due to legal issues, the ZSNES Development Team can provide you neither with ROMs nor links to them. In addition, ZSNES may not be distributed with ROM images. However, as with many cases like this, Google is your friend.

There are still many bugs left in ZSNES, so don't expect it to run all your favorite games. If ZSNES doesn't work for you, then don't use it. Use Snes9x, SNEeSe, Super Sleuth, or bsnes instead! In fact, even if you use ZSNES, use those emulators too!

Current Progress

The following are implemented

  • Complete 65816 instruction set
  • SRAM support
  • LoROM and HiROM support
  • SlowROM and FastROM support
  • Full DMA support
  • HIRQ/VIRQ/NMI Interrupts
  • Support for several SNES file formats (SMC, SFC, SWC, FIG, MGD, MGH, UFO, BIN, GD3, GD7, DX2, USA, EUR, JAP, AUS, ST, BS, 048, 058, 078,), including split files (1, 2, 3; A, B, C)
  • Interleaved format support (except SuperFX games)
  • PAL/NTSC timing support

Graphics engines (PPUs)

The following are implemented in both graphics engines, all color modes:
  • Graphic modes 0,1,2,3,4,5,6,7
  • 8x8, 16x16, 32x32, and 64x64 sprite support (flipped in all directions)
  • 8x8 and 16x16 tiles
  • 32x32,64x32,32x64,64x64 tile modes
  • Full HDMA effects for wavy backgrounds, interesting mode 7 effects, etc.
  • Mode 7 rotating and scaling effects
  • BG priorities
  • Sprite priorities
  • Add/sub of back area
  • Mosaic effects
About the old graphics engine:
  • Line engine
  • Missing lots of windowing and DMA effects
  • More accurate at drawing some things
  • 13-bit color rendering. (This is a compromise between color accuracy and speed. Not all transparencies will work correctly with this engine.)
What's available in the old graphics engine when using an 8-bit color video mode:
  • Offset per tile mode (mode 2/vertical only)
  • High-res 512 horizontal resolution (missing in 16x16)
  • Single and dual windowing routines
What's available in the old graphics engine when using a 16-bit color video mode:
  • Palette changing in the middle of a screen
  • Screen addition (full and half)
  • Screen subtraction (full)
  • Fixed color addition/subtraction
  • Window clipping for fixed color
About the new graphics engine:
  • Tile engine
  • Nearly complete engine with a few bugs
  • Can draw mostly everything on the SNES
  • 15-bit coloring
What's available in the new graphics engine when using an 8-bit color video mode:
  • Offset per tile mode (mode 2/vertical only, mode 4)
  • High res 512 resolution and 448/478 vertical resolution
  • Windowing effects
  • High resolution mode 7 (only in 640x480x256 video mode; active when all other video filters are disabled)
What's available in the new graphics engine when using a 16-bit color video mode:
  • All of old graphics engine 16-bit
  • High resolution mode 7
  • High resolution 16x16 tiles for mode 5
  • Full 15-bit color transparencies for improved picture quality (MMX compatible CPUs only)

The following are present in sound:

  • 16-bit digital stereo sound
  • SPC700 Sound CPU
  • DSP Sound Processor
    • Echo effects
    • FIR filter
    • ADSR volume effects
    • GAIN volume effects
    • Noise effects
    • Pitch modulation

The following special input devices are emulated:

  • MultiTap (5 player support)
  • Super NES Mouse (missing some features, such as speed settings)
  • Super NES Super Scope
  • Konami Lethal Enforcer Gun
  • Automatic configuration via NSRT headers

The following special cartridge processors are emulated, in whole or in part:

Special Chip | Progress
C4 | 100%
Nintendo DSP-1 | 100%
Nintendo DSP-2 | 100%
Nintendo DSP-3 | 80%
Nintendo DSP-4 | 95%
OBC-1 | 100%
SA-1 | 90%
S-DD1 | 100%
Seta DSP 10 | 99%
Seta DSP 11 | 80%
SPC7110 | 100% except decompression
S-RTC | 95%
SuperFX | 90%

The following add-on devices are emulated:

Special Cartridge / Add-On | Progress
Broadcast Satellaview (BS-X) | 50%
Nintendo Super System | 100% except the menus
Same Game, SD Gundam G-Next | 100%
Sufami Turbo | 95%

The following features are missing:

  • Pseudo 512 SNES horizontal resolution (no games are known to use this)
  • Some modes in offset per tile mode
  • Some direct color modes (no games are known to use these)
  • Seta RISC chip
  • True SPC7110 decompression
  • Super GameBoy emulation

What will not run (or not play properly):

Please read our statement on game compatibility.

  • Some SuperFX games (regardless of interleave status)
  • Interleaved SuperFX games (deinterleave them with NSRT)
  • Some Broadcast Satellaview (BS-X) games
  • Games with unknown co-processors
  • Games that don't have a valid header
  • Games that hit a severe bug in the 65816/PPU/SPC700/DSP routines
  • Games that require special timing

Extra Features

  • Support for save states, including rewinding
  • Extensive movie recording and dumping features
  • Many emulation speed options, including automatic frame skipping to compensate for slower machines
  • Full cheat code support (including Game Genie, Pro Action Replay, and GoldFinger)
  • Automatic IPS soft-patching (including up to 11 sequential patches)
  • Custom-built GUI with many time-saving features
  • Support for loading Zip, gZip, and JMA-compressed ROMs
  • Randomized ROM loading
  • Support for input from keyboards, joysticks, and gamepads, as well as a key combination editor
  • Many video output options, including graphics-enhancing filters
  • Highly configurable sound output options
  • Netplay (currently disabled)
  • User-editable configuration files
  • Debugger
  • Accepts command-line arguments

System Requirements

Supported operating systems

Official Ports
  • Win port: Microsoft Windows 95/98/ME/2000/XP/2003/Vista
  • SDL port: Linux, BSD, Mac OS X, or Xbox running Linux
  • DOS port: Microsoft DOS (may work on other non-MS DOSes)
Un-Official Ports
  • ZsnexBox: Microsoft Xbox (native)

CPU requirements

ZSNES absolutely requires a 100% x86-compatible processor. You probably already meet this requirement. Most consumer-grade processors sold by Intel and AMD use the x86 instruction set.

Because much of ZSNES' source code is written in x86 assembly, it will only run on processors that are 100% x86 compatible. "Ports" to other architectures are impossible; we recommend Snes9x as the SNES emulator of choice for portability.

Playing a special chip game will significantly increase CPU usage. For these games, you may require a processor faster than those listed below.

Free space requirements

The program files alone require about 1MB. The amount of disk space required for other files varies greatly. For example, uncompressed ROMs (not included!) require 256KB-6144KB each. Save states typically require about 270KB each; however, this can increase up to an additional 200KB for special chip games.

Win Port

  • OS: Windows 95/98/ME
    • CPU: Pentium II (or equivalent) 233MHz (500MHz recommended)
    • RAM: 32MB (64MB recommended)
  • OS: Windows 2000/XP/2003/Vista
    • CPU: Pentium II (or equivalent) 266MHz (500MHz recommended)
    • RAM: 64MB of RAM (128MB recommended)
  • API: DirectX v8.0a or later must be installed
  • Video: any video card that supports DirectDraw (acceleration recommended)
  • Sound: any sound card that supports DirectSound (acceleration recommended)

SDL Port

  • OS: Linux, BSD, or Mac OS X
  • CPU: 266MHz (500MHz recommended, especially if using X)
  • RAM: 32MB (64MB recommended; more if SDL is compiled to use X)
  • API: SDL v1.20 or later
  • Video: almost any video card will work (hardware OpenGL support and acceleration highly recommended)
  • Sound: any sound card supported by SDL (using ALSA or OSS)

DOS Port

  • OS: Microsoft DOS (some non-MS DOSes may work)
  • CPU: Pentium II (or equivalent) 233MHz
  • RAM: 32MB (minimum of 17MB free, required for loading 48mbit ROMs)
  • Video: VGA card
    • For 16-bit color, an SVGA card with VESA 2 and Linear Frame Buffer support is required.
    • You may be able to use Scitech Display Doctor to enable VESA 2 support on some cards that don't already support it.
  • Sound: Sound Blaster Pro or 100% compatible (SB16 or 100% compatible recommended)

These system requirements assume you are running the DOS port under pure DOS. If you are using the DOS port from within Windows, the CPU and RAM requirements will be the same as for the Win port.

Installation

Win/DOS Port

Installation:
  1. Download the latest version of ZSNES from ZSNES.com. The file you download is an archive containing the ZSNES binary file and documentation.
  2. Extract the contents of the archive into a new folder on your hard drive. Do not simply overwrite an older version of ZSNES.
  3. You can now run ZSNES by executing the ZSNES binary, named zsnesw.exe (Windows) or zsnes.exe (DOS). ZSNES is not packaged with an installer, so there will be no entry in the Windows Start Menu.

Note: In Windows, you can create a shortcut to ZSNES to make it easier to open the program. Right-click on the zsnesw.exe icon to bring up the context menu, and left-click Create Shortcut. A shortcut to the executable file will appear in the folder. You can now move the newly-created shortcut to your Desktop or Start Menu. Opening the shortcut will run ZSNES from its original location.

Re-Installation / Reset to default settings:

If you find that you are experiencing a number of unexplained errors in ZSNES, or if you wish to reset all settings back to their defaults, simply delete the configuration files that were generated by ZSNES the first time you ran the program.

Un-Installation:

If you wish to uninstall ZSNES, simply delete the entire folder (and thus, all files contained within) into which you installed ZSNES (as described in Step 2 of Installation, above).

-or-

If you have since put additional files (such as ROMs) into your ZSNES install folder, and do not wish to delete or move them, you will have to delete the individual ZSNES files. Please refer to the Files section for information on individual files and file types related to ZSNES. You will also need to delete the docs folder.

Note: ZSNES does not use the Windows registry, nor does it generate "hidden" configuration files all over your system.

SDL Port / Compiling from source

  • Download the latest source release of ZSNES from ZSNES.com.
  • After unpacking, navigate to the src directory and run the following commands:
    • ./configure --enable-release
    • make
    And as root:
    • make install
  • Other, more detailed instructions are provided in the docs/install.txt file.
Un-Installation:

If you wish to uninstall ZSNES, you can run make uninstall as root if you still have your Makefile.

Otherwise, you will need to navigate to /usr/local/bin and delete zsnes. Then navigate to /usr/local/man/man1 and delete zsnes.1. Or just delete the man1 directory if you have nothing else in it.

You will need root access to perform the above actions.

You will also need to delete ~/.zsnes or ~/Library/Application Support/ZSNES in Mac OS X. Do note that various files are saved in here by default (such as game saves); be sure to back them up if you want to keep them.

Basic Usage

  1. Install ZSNES.
  2. Run ZSNES.
    • If you're using Windows, double-click on the executable file.
    • If you're using DOS, navigate to the ZSNES installation folder and type zsnes.exe at the command line.
  3. Configure the input settings (Config Menu -> Input) as desired, or use the default settings.
  4. Configure the video settings (Config Menu -> Video) as desired, or use the default settings.
  5. Configure path settings (Config Menu -> Paths) if you don't want all the automatically generated files going into the same directories as your ROMs.
  6. Load a game (Game Menu -> Load) and start playing.
  7. When you are ready to stop playing, you have a number of choices to save your game.
    • If your game has its own native save function, just use it.
    • If your game does not have a save function, or you are at a point in the game where you can't save, you can create a save state. Do this by pressing F2.
  8. After you save your game:
    • You can load a new game using the same steps as above, or
    • Exit the emulator by going to Game Menu -> Quit.
  9. When you are ready to return to a previously saved game, just re-load that game.
    • Load an in-game save in the normal way.
    • If you saved a state, you can load that state by pressing F4.

This section only covers very basic usage. Please read the entire documentation for more information.

Default Keys

Game Keys

You can change the default keys for the standard SNES controller under Config->Input.

SNES Button | Player 1 Key | Player 2 Key
D-Pad Up | Arrow Up | J
D-Pad Down | Arrow Down | M
D-Pad Left | Arrow Left | N
D-Pad Right | Arrow Right | ,
Start | Return / Enter | Left Ctrl
Select | Right Shift | Left Alt
A | X | Home
B | Z | End
X | S | Insert
Y | A | Delete
L (Left Shoulder) | D | Page Up
R (Right Shoulder) | C | Page Down

You can change the default keys for special input devices under Config->Devices.

The special input devices just use input from your mouse for movement and aiming.

Super Scope Button | Computer/Mouse Button
Fire | Left mouse button
Cursor Mode Button | Right mouse button
Toggle Auto-fire | =
Pause | Backspace

Emulator Keys

Key | Function | Where to Customize
Esc | When a game is loaded, toggle the GUI (pauses emulation while GUI visible). | Cannot be changed
F1 | Open the F1 Quick Menu. | Cannot be changed
F2 | Save a state to current slot. | Config->Saves
F3 | Open the save state slot chooser. | Config->Saves
F4 | Load a save state from the current slot. | Config->Saves
F5 <--> F12 | Toggle sound channels 1 through 8, respectively | Misc->Misc Keys
1 2 3 4 | Toggle background layers 1, 2, 3, and 4, respectively | Misc->Misc Keys
5 | Toggle sprite/object layer | Misc->Misc Keys
6 | Panic Key - Reset all switches to default (enable Offset Mode, Windowing, all background layers, sprite/object layer, and sound channels; disable Add-on Devices; reset Emulation Speed Throttle) | Misc->Misc Keys
8 | Toggle New Graphics Engine | Misc->Misc Keys
9 | Toggle Windowing | Misc->Misc Keys
0 | Toggle Offset Mode | Misc->Misc Keys
T | While using Netplay, press to open the Chat window | Misc->Misc Keys
~ | Fast Forward | Config->Speed
P | Pause Emulation | Config->Speed

Save States

Warning: If you care about your progress in a game, remember to use in-game saves regularly! Do not rely solely on save states!

When you "save a state," ZSNES creates a file that contains the values of all the variables that change while ZSNES is emulating a game. These values are specific to the exact moment that you saved the state. You can then load a save state at a later time, thus returning ZSNES to the exact point in the game when you saved the state originally. This allows you to save your progress at a point that might not normally be possible with in-game saves, or in games that don't have in-game saves at all.

Save states are typically not compatible between emulators, and sometimes not even between different versions of the same emulator, often due to internal core changes. In fact, it should be noted that save states created prior to v0.600 of ZSNES will not work in current versions.

To remedy this problem, first load the state in any version of ZSNES from v0.600 to v1.42. Then, immediately after loading, save another state. The new state you just created should (hopefully) load correctly in ZSNES v1.50 and higher.

Since ZSNES does not support save states created by any other SNES emulator, you can instead use the emulator-independent SRAM (.srm) data to transfer game progress from one emulator to another.

Each ZSNES save state is approximately 270KB in size. Special chip games may require an additional 200KB, however.

How to Use Save States

You can create and load save states using the GUI.

It's much easier to just use the default quick keys for these features. Press F2 to save, F4 to load, and F3 to open the save state slot chooser (with graphical preview).

Configure general save behavior under Config->Saves. Configure save paths under Config->Paths.

Movies

Warning: Playing back a previously recorded movie will overwrite any SRAM data for the current game with the SRAM data contained in the ZMV file. This means you should enable Do Not Save SRAM when playing around with movies!!

Note that re-recording, chapters, and appending will not work with movies recorded in the old ZMV format (movies made prior to ZSNES v1.50).

For descriptions of the Movie Options dialog, please refer to the GUI page.

About Movies

The ZSNES movie format (ZMV) has been completely rewritten and is now better and more feature-rich than before, with the most capabilities yet implemented in an emulator. Three of the most notable new features are re-recording, dumping ZMVs to AVI, and movie subtitles, described below.

A movie file consists of a save state, SRAM data (when applicable), and the recorded controller data, as well as any chapters (states) that have been inserted. It also keeps track of a few other things which are negligible with regard to the overall filesize. Movie files should record at less than 1KB/minute (60KB/hour).

ZSNES should be able to record most actions you can do with a real SNES, including resetting. During playback, the game will reset just as you did during recording.

Limitations

You cannot record games that use the Konami Justifier special input device. Lethal Enforcers is the only game known to require this device.

You cannot record games while using Netplay.

You should be able to record ZSNES movies for all game types; however, ZMVs are heavily dependant on save states, so any games that exhibit problems while using save states will also exhibit problems when recording and playing movies.

For best results, you should play back movies with the same version of ZSNES that was used to record them. Otherwise, keypresses may become desynchronized from the emulation playback.

Re-Recording

You do not have to do everything perfectly the first time you record a movie. ZSNES allows you to re-record parts of a movie, inserting the newly recorded parts seamlessly into the previously recorded parts. You can accomplish this in a number of ways:

  • While playing back a movie, start recording again.
  • Use save states while recording movies. Loading the states will allow you to re-record.
  • You can use the rewind key to go back in movies. The rewind key can be configured under the Config->Saves menu.

Chapters

You can insert chapters into your movies, to which you can seek during movie playback.

You are limited to 65535 (216-1) chapters created during recording, in addition to 65535 (216-1) created during playback.

Subtitles

Subtitles allow you to create a short message that will be visible on-screen during playback of a movie.

  1. Create an empty file in your save directory (or wherever your movies are saved).
  2. The subtitle file must be named in the following manner:
    • Subtitle file name = ZMV file name = ROM file name. (Example: smw.sfc (Super Mario World ROM), smw.zmv, smw.sub).
    • If you are using movie slot 0, file extension = .sub.
    • If you are using movie slot 1 through 9, change the last letter of the extension to match the movie slot you are using. (Example: slot 1 = .su1, slot 5 = .su5, slot 9 = .su9).
  3. For each subtitle you want in the movie, add a new line to the subtitle file, with the following information:
    • Start Frame:Frame Duration:Message
    • For example: 10:100:Beating the Last Boss without the quotes. In this example, the message "Beating the Last Boss" will appear in the tenth frame and stay visible for 100 frames (thus, until the 110th frame).
    • ZSNES can display only one subtitle at a time. So make sure that the start frame for the next subtitle is not during the duration time of the previous subtitle. You must also list your subtitles sequentially for all of them to be played (they cannot be out of order).
    • ZSNES can display a maximum of 34 characters (of a subtitle message) across the width of the screen.
  4. Now save your new subtitle file. Open ZSNES, play a movie, and you should see your subtitles appear!

Movie Dumping

See the Movie Dumping section of the Advanced Usage page for more information.

IPS Patching

IPS patches are files that are applied to an original ROM, which change the programming of the ROM in some way. They are primarily used to translate ROMs into another language; however, they can be used for a variety of purposes. Visit Romhacking.net for more information about translations and ROM hacks.

ZSNES has the ability to automatically "soft-patch" a ROM. This means that after ZSNES loads a ROM into its memory, it will apply the IPS patch to the in-memory ROM data, not the ROM file on your hard disk. This eliminates the need to keep two copies of a ROM: the original, and the patched.

Applying a single IPS file to a ROM:

  1. Make sure Enable Auto-Patch is checked in Config->Options.
  2. The IPS file must be either in your Saves directory or in the same directory as the ROM.
  3. The IPS file and the ROM file must have matching filenames. For example, SD3.sfc and SD3.ips. If your ROM file is compressed, the IPS file must match the compressed filename. For example, if you have the file SD3.sfc compressed inside the file Seiken Densetsu 3 (J).zip, the IPS file must be named Seiken Densetsu 3 (J).ips.
  4. If you meet the above three conditions, just load your ROM file as normal, and ZSNES should automatically patch the IPS file to the in-memory ROM. Remember, your original ROM file will not be changed.
  5. If you have done everything outlined in the steps above, and your game does not appear to be working, refer to the FAQ.

Applying multiple IPS files to a ROM:

ZSNES has the ability to apply up to eleven separate IPS files to the same ROM file. You must give each IPS file a specific extension to tell ZSNES in what order to apply them. Aside from changing the extension of the IPS files, just follow the directions above.

IPS file extension | Applied When?
ips | First
ip0 | Second
ip1 | Third
ip2 | Fourth
ip3 | Fifth
ip4 | Sixth
ip5 | Seventh
ip6 | Eighth
ip7 | Ninth
ip8 | Tenth
ip9 | Eleventh

ZSNES will not apply non-sequentially extensioned IPS files. This means that if you have three IPS files, named patch.ips, patch.ip0, and patch.ip6, ZSNES will only apply the first two.

Please remember that the order in which you apply the IPS patches may be important. Applying the patches in the wrong order may result in strange bugs, or even an unplayable game. Please refer to the documentation that accompanied your IPS file.

Alternative method of applying IPS files to compressed ROMs:

The simplest method of applying an IPS file to a compressed ROM is to simply place the IPS file in the same archive as the ROM. The filename of the IPS file does not have to match the compressed or uncompressed filename of the ROM. Do not add more than one IPS file of a given extension to an archive. Results can be unpredictable as to which of the same-extension IPS files will be applied to the ROM.

If your ROM is compressed, ZSNES will first look for IPS files inside the archive. If it finds any, it will only load IPS files from inside the archive, and will not look anywhere else. Otherwise, ZSNES looks in the Saves directory and the same directory as the ROM.

Cheat Codes

Currently, ZSNES supports Game Genie, Pro Action Replay, and GoldFinger codes.

How to use cheat codes:

  1. Load the ROM to which you want to apply cheats.
  2. Press ESC to toggle the GUI. Open the Add Code dialog from the Cheat Menu. You can enter up to 255 codes for each game.
  3. After adding your codes, press ESC until you are back to your game.

To use a multi-line cheat code, just enter each line as a separate code!

How to use .cht files:

Place the .cht file into the same directory as the ROM, or into your Saves folder. The .cht file must be named according to the normal naming rules.

Troubleshooting Cheat Codes

  • Try using the Fix button in the Browse Cheats dialog.
  • Some codes are meant to be used with different versions of the same game. If a cheat code doesn't work and there is one for both Game Genie and Pro Action Replay, try them both.
  • Remember that Game Genie codes require the - (dashes).
  • Try resetting the game. Any code for a game that mentions a term similar to "Start with" means that the game must be reset in order to take effect.
  • If you are having a hard time with comparative searches, make sure to delete the tmpchtsr.___ file in your ZSNES directory.

Files

This section attempts to explain the various files that are created, loaded, or used by ZSNES.

Most of the data files that are specific to individual ROMs are named in the following manner:

  • The filename of the data file is the same as the filename of the ROM from which it was created.
  • The file extension of the data file changes, depending on the following:
    • If there are no "slots" for the data file, then it is just the normal file extension (srm, bmp, png, raw, cht, cmb, cfg, txt).
    • If you are using slot 0, then it is just the normal file extension (zst, zmv, sub, ips, spc).
    • If you are using slots 1-9, then the last letter of the file extension changes to match the slot number (zs1-zs9).
    • If you are using slots 10-99, then the last two letters of the file extension change to match the slot number (z10-z99).
File Name | File Extension | File Type Name | Description | Where Created?
Whatever you want, or have them automatically named by NSRT. | smc, sfc, swc, ... | ROM (Game) | These are common extensions for ROMs, which are computer files of the game data on real SNES cartridges. | Wherever you put them.
romname | srm | Static RAM | This is the in-game save file. It is automatically generated by ZSNES when you use the in-game save function. Some games use Static RAM as working RAM rather than to save a game. This format should be compatible among all emulators. | Saves folder
romname | zst, zs1-zs9, z10-z99 | ZSNES Save State | See the Save States section for more information. | Saves folder
romname | zmv, zm1-zm9 | ZSNES Movie | See the Movies section for more information. | Saves folder
romname | sub, su1-su9 | ZSNES Subtitle | See the Subtitles section for more information. | Saves folder
romname | ips, ip0-ip9 | International Patching System | See the IPS Patching section for more information. | Saves folder, Same folder as ROM
romname_***** / img***** | bmp, png | Images | These are snapshots of the game screen, created by ZSNES when you use the F1 Menu. The file name is appended by a number, up to 99999. | Snapshots folder
romname | spc, sp1-sp9, s10-s99 | SPC Sound | These files are created by ZSNES when you dump the SPC data of the game you are playing by using the F1 Menu. Note: In Windows, the .spc extension is sometimes used for PKCS Certificates. | SPCs folder
sounddmp | raw | Sound Buffer Dump | This is a dump of sound buffer data, created when you use the appropriate F1 Menu option. | SPCs folder
romname | cht | Cheat Data | This file contains cheat codes that you entered using the Cheat Code Editor. These files are generally compatible between different versions of the same emulator, but not necessarily between different emulators. | Saves folder
romname | cmb | Key Combination Data | These files contain key combination data, created when you use the Key Combination Editor. | Saves folder
data | cmb | Key Combination Data | This file contains key combination data, created when you use the Key Combination Editor for an unspecific game. | ZSNES folder (Win/DOS) / ~/.zsnes (SDL) / ~/Library/Application Support/ZSNES (SDL - Mac OS X)
zsnes / zsnesw | exe (Win/DOS) | ZSNES executable | This is the main ZSNES executable binary file. | "ZSNES Folder" means the location of this executable
zsnes / zsnesw / zsnesl | cfg | ZSNES Configuration File | User-editable configuration file where you can set almost any option in ZSNES. | ZSNES folder (Win/DOS) / ~/.zsnes (SDL) / ~/Library/Application Support/ZSNES (SDL - Mac OS X)
zmovie | cfg | ZSNES Movie Configuration File | User-editable configuration file where you can change advanced movie dumping features. | ZSNES folder (Win/DOS) / ~/.zsnes (SDL) / ~/Library/Application Support/ZSNES (SDL - Mac OS X)
zfont | txt | ZSNES Font Configuration File | This is where the appearance of text in the ZSNES GUI is configured. | ZSNES folder (Win/DOS) / ~/.zsnes (SDL) / ~/Library/Application Support/ZSNES (SDL - Mac OS X)
rominfo | txt | ROM Information | This contains information about the ROM you most recently ran. You can configure this behavior under Config->Options. | ZSNES folder (Win/DOS) / ~/.zsnes (SDL) / ~/Library/Application Support/ZSNES (SDL - Mac OS X)

Footer

This documentation is best viewed in a standards-compliant web browser, like Firefox or Opera.

Support This Project Valid XHTML 1.0 Strict

Copyright (C) ZSNES Team & ZSNES Documentation Team


Graphical User Interface - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
    • Game Menu
    • Quick Menu
    • Config Menu
    • Cheat Menu
    • Netplay Menu
    • Misc Menu
    • F1 Menu
    • Save Slot Chooser
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

The ZSNES GUI

The ZSNES graphical user interface (GUI)
Quick | Game | Config | Cheat | Netplay | Misc
1. | Load | Input | Add Code | Internet | Misc Keys
2. | Run | Devices | Browse |  | GUI Opts
3. | Reset | Chip CFG | Search |  | Movie Opt
... | Save State | Options |  |  | Key Comb.
8. | Open State | Video |  |  | Save CFG
9. | Pick State | Sound |  |  | About
0. | Quit | Paths |  |  |
Freeze Data: |  | Saves |  |  |
Clear All Data |  | Speed |  |  |

ZSNES uses a custom GUI, introduced in v0.600.

You can move the ZSNES window either by clicking and dragging its title bar, or right-clicking anywhere in the ZSNES window and dragging. You can move dialogs within ZSNES by clicking and dragging their respective title bars.

If any dialog is open within ZSNES, pressing ESC will close the top-most window.

If a game is loaded and running, you can press ESC to pause emulation and show the GUI. Pressing ESC again will hide the GUI and resume emulation.

Certain options throughout the GUI have an associated hotkey. Notice that many options have a letter in them that is underlined; pressing that letter on your keyboard will toggle the option.

Game Menu

ZSNES GUI showing the Game Menu

Load

This opens the file loading dialog. Use this dialog to browse for a ROM to load and begin emulation.

  • Filename box - Displays files in the current directory in alphabetical order. Double-click on a file to load it. Use the Show All Extensions option to change what types of files are displayed in this box.
  • Directory box - Displays all subdirectories in the current directory. Double-click on items in this box to navigate between folders. The first item in this box is always two dots (..); double-click this item to move to the parent directory of the current directory. Displayed below the current subdirectories are all drive letters detected on your system. Use these drive letters to change between drives.
  • Current directory - Below these two boxes, the current directory is displayed. By default, the current directory will be the same directory in which the ZSNES executable is located.
  • Address box - By typing letters into this box, you can go to the first filename or directory that matches the string of letters you typed.
  • Current selection - Below the text box, the current / highlighted selection is displayed. In the DOS port, this line does not display the current selection, but instead says "Display Type:".
  • Display Type: - Choose what type of filename to display in the Filename box.
    • Long Filename (Win/SDL) or Win9x Long Filename (DOS) displays the actual name of the files in the current directory, along with their extensions.
    • SNES Header Name will display the internal SNES header names of the files in the current directory.
      • ZSNES can display header names using English and Kanji characters. Characters in other languages are not supported and will be displayed as garbled text. Improper or invalid header names will also be garbled text.
      • The header names of compressed files will not be displayed.
      • If for some reason the header of a file cannot be displayed, the filename of that file will instead be displayed.
      • Warning: Using this option can make navigating folders a slow process, since each time you navigate to a new folder, ZSNES must scan all files in the folder for their header names.
    • DOS 8.3 Format (DOS only, default for DOS) will truncate all filenames to be compatible with DOS filename length restrictions (up to eight letters in the filename, plus a three letter extension).
  • Show All Extensions (off by default) - When this option is not checked, only files with common SNES ROM extensions (.smc, .sfc, ...) will be displayed. When this option is checked, all files will be displayed, regardless of extension. When used in combination with the SNES Header Name option above, non-ROM files will be shown as ** Invalid File **.
  • Force - Checking these boxes will force ROMs to be loaded as if they had those settings, rather than having ZSNES automatically detect those settings. Don't check any of these boxes unless you know what you're doing.
    • NTSC / PAL: Force one of these display types for all ROMs loaded.
    • HiROM / LoROM: Force one of these memory mapping settings for all ROMs loaded.
  • Load button will load the current selection and begin emulation.

Keyboard usage with the file load dialog is as follows:

  • Left / Right Arrows - Switch between the file and directory boxes.
  • Up / Down Arrows - Move up and down in the list.
  • PageUp / PageDown - Move up and down the list in larger increments.
  • Home / End - Go to the top or bottom of the list.
  • Typing characters - Go to the first item in the list that matches the typed characters.
  • Enter / Return - Load the currently selected file or open the currently selected folder.

Address box details:

  • If you input a single space, ZSNES will randomly select a game or folder within the current directory, depending on which box is highlighted. Then hit Load or press Enter to open the selection.
  • When you press enter with text in the box without any '\' or ':' in the filename, ZSNES will first look for a directory matching the text and will then change its directory if one is found. Otherwise, it will load the current file or directory highlighted by the selection cursor.
  • You can type in the full filename or directory including path (e.g. "d:\games\mario.smc" or just "d:").

Run

Hides the GUI and resumes emulation. Equivalent to pressing ESC.

Reset

Resets the game; asks for confirmation.

Save State

Creates a save state of the game in the current save state slot; asks for confirmation.

Open State

Loads a save state from the current save state slot; asks for confirmation.

Pick State

Opens a dialog that allows you to pick the current save state slot. It's easier to use the F3 Menu.

  • Select Save Slot: - Click on a radio button to use that save slot.
  • Slot Level: - Use the + and - buttons to choose the slot level.

Quit

Exit the emulator. On exit, ZSNES will save any changes to its configuration files. It will also save any changes to the Save RAM file, although you can also configure ZSNES to write changes to the disk whenever Save RAM changes.

Quick Menu

ZSNES GUI showing the Quick Game Load Menu

The list of numbers

The ten most recently loaded games are displayed here. By clicking on one of these entries, you can load that game. This is a quicker way to load a recently played game then using the Game->Load function and navigating to the ROM. The most recently played game is #1.

Freeze Data :

  • Off - The list will change as normal, reflecting the ten most recently loaded ROMs.
  • On - The list will not change anymore. You can use this feature to create a list of your ten favorite ROMs, for easy access at all times.

Clear All Data

Clears the entire list.

Config Menu

ZSNES GUI showing the Configuration Menu

Input

This dialog allows you to customize the input options for all five SNES controllers.

  • Tabs #1-#5 - Choose the SNES controller to configure. You can use the Tab key to cycle through these tabs.
  • Device: - Use your mouse to choose your desired device, and use the Set button to set your choice.
    • None - Equivalent to unplugging the SNES controller from that port.
    • Keyboard/Gamepad (Win/SDL only) - Equivalent to plugging in the SNES controller to that port. Using this device should allow input from all attached keyboards, gamepads and joysticks.
    • If you are using the DOS port, you must manually choose the appropriate device from the list.
  • Current: - Shows the device that is currently active.
  • Buttons
    • Set - Set your choice made in the Device: box. Using this button will reset key assignments to their defaults.
    • Set Keys - ZSNES will automatically cycle through each of the standard SNES buttons, prompting you to assign a key to each one.
    • Calibrate (DOS only) - This option is here for those older joysticks that need to be calibrated in-game before they can be used properly.
  • Keys: - These are the standard SNES buttons, and the only ones required to be configured. Click inside the black box beside each one of these to configure a key for it. Press ESC to clear the current assignment.
  • Turbo: - You can assign keys to these buttons in the same way you assign them to the standard SNES buttons. Holding down the key assigned to the turbo button is the same as if you were repeatedly pressing the normal button very, very fast. You can control the rate of key presses per second with the Turbo at 30Hz option, below.
  • Diagonals: - It may be more convenient to assign a single key to a diagonal direction of the D-Pad, rather than pressing two keys at the same time. Just in case it's not obvious: DL=Down+Left, DR=Down+Right, UL=Up+Left, UR=Up+Right.
  • Use Joystick Port 209H (DOS only) - Use the 209H hardware port; use this if you have moved the port's jumper (or if your joystick does not work when this feature is disabled).
  • Use Pl3/4 as Pl1/2 - The key assignments for Player 3, in addition to those for Player 1, will be used for SNES controller port #1. The key assignments for Player 4, in addition to those for Player 2, will be used for SNES controller port #2. As a result, MultiTap support will be disabled (which means only two controllers will be active). The primary use of this option is to allow you to assign two different devices for the same SNES controller. For example, you might use a gamepad as input for Player 1, and a keyboard as input for Player 3. Then, with this option enabled, you may use either one of these devices (or both simultaneously) to control Player 1.
  • Allow U+D/L+R - This option allows for the simultaneous pressing of opposing directional keys (up and down; left and right) on the SNES pad. This feature was implemented for those who need it to exploit bugs in certain games for recording "speed-run" ZMVs. Warning: Do not use this for normal gameplay, as the resulting bugs disrupt the "natural" gaming experience.
  • Turbo at 30Hz - Default: Checked. When enabled, turbo keys will equal 30 button presses per second in NTSC games or 25 presses per second in PAL games. Otherwise, turbo keys will repeat 60 times per second in NTSC games or 50 times per second in PAL games. This option is enabled by default mainly because some games can't handle excessive key presses.
  • Sidewinder Fix (DOS port only) - If your Sidewinder doesn't work after disabling the Sidewinder profiler and having pressed the mode button twice, enable this.

Note: A keyboard is a poor replacement for a proper gamepad. SNES games are designed to be played with a gamepad, so if you find that you're having trouble with the keyboard, use a gamepad.

There is another important limitation with keyboards. Many keyboards have a limit on the maximum number of simultaneous key-presses, above which they will not detect input. This means combinations of, for example, three or more keys may not be properly detected. One way to get around this kind of keyboard limitation is to assign multiple SNES buttons to the same keyboard key. There is a slightly longer explanation in the FAQ.

Devices

This dialog allows you to select special input devices for Ports 1 and 2 of the SNES.

  • Port 1: - Select a device to be plugged into Port 1. The SNES Mouse is the only special device supported on Port 1.
    • Gamepad - Use the key assignments for Player #1, configured in the Input dialog.
    • Mouse - Use your computer's mouse just like it is a connected SNES Mouse.
  • Port 2: - Select a device to be plugged into Port 2.
    • Gamepad - Use the key assignments for Player #2, configured in the Input dialog.
    • Mouse - Use your computer's mouse just like it is a connected SNES Mouse.
    • Super Scope - Use your mouse as if it were a Super Scope. Default key assignments are here.
    • 1 Justifier - Simulates the movements for the Konami Justifier; required for only one game, Lethal Enforcers.
    • 2 Justifiers -
  • Cycle P1:, Cycle P2: - You can assign a key to each of these functions. Pressing the key will cycle through the list of special controllers available for that port.
  • Left Handed - Check one of these boxes to reverse the mouse buttons for the special controllers on that port.
  • Super Scope Keys: - They can now be customized!
    • Auto-Fire - Default: =. Toggle auto-fire on or off.
    • SS Pause - Default: Backspace. Assign a key for the Super Scope pause button.

Note: ZSNES will automatically enable the appropriate add-on for special controller games that have NSRT headers (e.g. the SNES mouse will automatically hook up after loading Mario Paint).

Note: ZSNES supports the ManyMouse library by Ryan C. Gordon, which means that ZSNES can emulate two SNES devices (one connected in each port) if you have two mice plugged in. For a list of known affected games (and for other information), please see the ManyMouse section of the Games page.

Chip CFG

These are special settings for the Nintendo Super System. Generally, there is no need for a user to change these settings.

  • Super System: - Set which DIP switches are enabled.
    • DIP 1/2/3/4/5/6 -

The Nintendo Super System was an arcade machine that used the SNES hardware. Changing the settings in this window will only affect games designed for the NSS. You can find information at Coin-Op Museum and Wikipedia.

Options

You can change various options here, some of which affect gameplay, while others merely change GUI behavior.

  • System:
    • Enable MMX Support - Enables MMX copying routines for a slight speed increase (MMX processors only). Certain video filters, audio interpolation and low-pass filters require MMX support. These options will not be visible unless the MMX Support option is checked. (See below for the particular options requiring MMX support).
    • Pause Emu in Background (Win only) - If enabled, then game emulation will automatically be paused when the ZSNES window loses focus, and it will unpause when ZSNES regains focus.
    • Increase Emu Priority (Win only) - Enabling this will give ZSNES more processor time, if needed. This may improve the performance of ZSNES on your machine; however, it will reduce the amount of resources given to applications running in the background. Processing priority is set to "High" on a Win9x OS and "Above Normal" on 2k/XP/2003/Vista.
    • Disable Power Management (Win only) - Disables power management while ZSNES is running, so that your gameplay will not be interrupted if you're using a gamepad.
  • Gfx Engines:
    • Use New Gfx Eng - Default: Checked. Check to use the new graphics engine; uncheck to use the old graphics engine. The new graphics engine should be adequate for most games; however, the old one may be necessary for some. You can read about the differences in Current Progress.
    • Use Alt Old Gfx Eng - Only visible when the new graphics engine is disabled, this option will enable the Old Gfx Engine Mode 2, which fixes many transparency bugs that currently plague ZSNES in the current engine. However, it also creates some new ones. This mode can be slower at times, so it's recommended that you only turn it on when you need it.
  • SShots: - Choose what image format to use for snapshots of the game screen. This setting is also configurable via the F1 Menu.
    • BMP - Snapshots will be saved as bitmap pictures (16-bit color). If you are using an 8-bit video mode in the DOS port, the bitmap will be saved with 8-bit color.
    • PNG - Snapshots will be saved as PNG files (32-bit ARGB color).
  • ROM:
    • Enable IPS Auto-Patching - When checked, ZSNES will automatically soft patch ROMs if a corresponding .ips file is found in your Saves directory. More information about the IPS patching feature can be found in the Readme.
    • Show ROM Info on Load - Briefly displays some internal information about the ROM when loaded. Please refer to this information when submitting bug reports.
    • Log ROM Info - When checked, ZSNES will create a file named rominfo.txt when you load a ROM; it contains information about the ROM.
  • Overlays:
    • Show FPS Cntr On Emu Load - When checked, the Frames per Second counter will be enabled each time you start ZSNES, even if it has been disabled during a session. The FPS counter can be manually enabled/disabled via the F1 Menu or with the 'Display FPS' quick key, once it has been assigned. This counter is only visible when using Auto Frame Rate.
    • Show Clock - The current system time will be displayed in the lower right-hand corner of the game screen.
      • 12 Hour Mode - Used in conjunction with the option above, this will display the system time in 12 hour mode instead of the default 24 hour mode.
      • Show Clock Box - Also used in conjunction with "Enable Clock", this option places a black box behind the clock to increase readability.
  • Messages:
    • Use Small Message Text - On-screen messages that pop up when you save a state, disable a background, etc. will be smaller.
    • Use Transparent Text - On-screen messages will be slightly transparent rather than solid. Using the Small Message Text option overrides this choice.

Video

This dialog allows you to change the numerous video settings available in ZSNES.

Please note that the internal resolution of the SNES is 256x224. Certain special high-resolution modes can produce up to 512x448 resolution. You may notice that the internal resolution has an 8:7 aspect ratio. SNES video output is not intended to be viewed at this aspect ratio, however. The 8:7 video signal would normally be scaled to a more-typical 4:3 aspect ratio when viewed on a television.

Modes tab
  • Video Mode box - The large box on the left lists all available video modes. You can use your mouse or the Up / Down / PgUp / PgDown / Home / End keys to scroll through this list.
    • Win/SDL port:
      • First column: lists the resolution, in pixels, W x H.
        • W x H - These video modes use a fixed resolution, in pixels, of the width and height shown.
        • Variable (SDL only) - Video output is scaled to the size of the window, and the window can be resized with the mouse; however, aspect ratio is locked, depending on which options are set.
        • Custom - Specify a custom, fixed resolution in the boxes to the right.
      • Second column:
        • O (SDL only) - Indicates whether the video mode uses the OpenGL API.
        • D - The video mode supports graphics-enhancing filters. Non-D modes will usually be (automatically) interpolated by your graphics card.
        • R - The video aspect ratio is locked to the internal SNES ratio of 8:7.
        • S - Video output is stretched to fill the entire window.
      • Third column: indicates whether the video mode is Windowed or Fullscreen.
    • DOS port:
      • First column: lists the resolution (in pixels) and color depth (in bits), W x H x B.
      • Second column: shows the mode type
        • ModeQ - A tweaked VGA video mode. Supports 256x256 resolution and 256 colors. Accesses hardware directly.
        • ModeX - A different tweaked VGA video mode, similar to ModeQ, although slower. Accesses hardware directly.
        • Vesa1 - VESA VBE 1.2. A standardized method of accessing VGA cards.
        • Vesa2 - VESA VBE 2. Faster and more features than VESA1. Read the Wikipedia article for an overview. The first and third external links from that article provide some more detailed information.
    • Your video card may be compatible with only some of the video modes listed. You should try each video mode to find the right combination of speed, compatibility, and enhancement features (listed below).
  • Set button - use the currently selected/highlighted video mode. ZSNES will now attempt to change to the new video mode. If the new video mode does not work, wait for ten seconds without pressing any keys, and ZSNES will return to the previous mode. Pressing Enter does the same thing as the Set button.
  • Custom: (Win/SDL only) - use in conjunction with one of the custom video modes at the bottom of the list to set a custom resolution.
    • Set button - save the current custom resolution.
    • Type in the custom width and height, respectively, in pixels, in the two black boxes.
  • Current: - shows the current video mode.

Note: Some video modes may work better / faster than others, depending on your system configuration. Play around to see what's best.

Filters tab
  • Video Filters: - Choose one video filter. You must use a D video mode to use any of these filters. Furthermore, filters marked with a * require MMX Support.
    • Interpolation (Win/DOS only) - Enable interpolation, a simple filter that smooths the image and makes it appear less pixellated. This is software-driven and can be accelerated with MMX support.
    • Bilinear Filter (SDL only) - This produces an effect similar to Interpolation. It is available only in OpenGL modes and, as long as you aren't using Mesa, is hardware-driven. This means that as long as you aren't using Mesa, it requires less CPU overhead. Another advantage of the bilinear filter is that it can also be used alongside the other filters, though this may be slow.
    • NTSC (Win/SDL only) - Written by blargg. It is recommended to use a video mode with at least 602x448 resolution. Makes the video output appear to be that of an NTSC CRT television. This filter is not available in the SDL port while using OpenGL modes.
    • 2xSaI Engine* - Written by Kreed. SaI stands for "Scale and Interpolation." This is a "smart" filter that tries to make a lo-res image (like SNES video output) appear to have a higher resolution. The image should look smoother, less blocky, when using this filter.
    • Super Eagle* - Written by Kreed. Similar to the 2XSaI engine, but does more blending.
    • Super 2xSaI* - Written by Kreed. This filter smoothes the graphics, but it blends more than the Super Eagle engine.
    • HQ2X* (Win/SDL only) - Written by MaxSt. It is recommended to use a 2x scaled image. Applies an advanced algorithm to smooth the appearance of a low-resolution image.
    • HQ3X* (Win only) - Written by MaxSt. More advanced than HQ2X, and it is recommended to use a 3x scaled image.
    • HQ4X* (Win only) - Written by MaxSt. More advanced than HQ3X, and it is recommended to use a 4x scaled image.
    • Note: The HQxX filters and the NTSC filter have particularly high system requirements to run smoothly.
  • Scanlines: - Choose one Scanline mode. Requires a D video mode.
    • None - This will disable scanlines.
    • 25% - This will enable scanline mode, except that each line is 25% darker than the line above it.
    • 50% - This will enable scanline mode, except that each line is 50% darker than the line above it.
    • Full - This mode adds a blank line in between every line to produce a scanline effect similar to a TV.
  • Misc Filters: - Choose miscellaneous filters.
    • Grayscale Mode - Makes the game display in monochrome color, i.e. black and white. This option is just there for fun and is probably not something you want to use continuously.
    • Hi-Res Mode 7 - Requires a D video mode and at least 512x448 resolution. Enabling this will double the vertical resolution used when rendering Mode 7 graphics. Thus, the resolution becomes 256*448 rather than the normal 256*224.
  • Monitor Sync: - Select monitor synchronization options.
    • VSync (Win/DOS only) - Synchronizes frame drawing to the monitor's refresh rate. This may reduce frame rate on your computer, but will reduce screen tearing.
    • Triple Buffering (Win/DOS only) - This setting is only visible while using a fullscreen video mode, and only applies while in fullscreen. Whereas VSync has only two frame buffers: the frame being drawn and the frame waiting to draw, Triple Buffering can write frame data to a third buffer. The primary use is to reduce the impact of VSync on slower systems. This option has precedence over VSync in Fullscreen modes.
  • Display Options: - Select how you want the image to be displayed.
    • Use 4:3 Ratio (Win/SDL only) - This only applies when using a custom mode. Using this option will lock the video output at 4:3 aspect ratio, regardless of the aspect ratio of the custom resolution you've chosen.
    • Small Screen (DOS only) - Video output will be at 256x224 (the native internal resolution of the SNES), instead of whatever resolution you are using.
    • Full Screen / Wide Screen (DOS only) - Horizontally stretches video output to fill the screen.
  • Not all of the video options above are available in every video mode and every port of ZSNES. Also note that you will need a fast computer for some of them if you don't want to see any slow-downs in emulation.
NTSC tab - Only visible when using the NTSC filter.
  • Blend Frames - Enable this for smoother transitions between frames when using a non-60Hz refresh rate.
  • Refresh - If this is enabled, changes to the NTSC filter will be applied as you are adjusting the sliders (below), rather than when you release the mouse button.
  • The sliders below are used to adjust various properties of the NTSC output.
    • Hue
    • Saturation
    • Contrast
    • Brightness
    • Sharpness
  • Presets - Press the appropriate button for instant configuration of the filter, instead of manually configuring.
    • Composite
    • S-Video
    • RGB
    • Monochrome
  • Reset button - Reset all settings on this tab only to their defaults.
  • Reset All button - Reset all settings on both NTSC tabs to their defaults.
Adv NTSC tab - Only visible when using the NTSC filter.
  • The sliders below are used to adjust various properties of the NTSC output.
    • Gamma
    • Resolution
    • Artifacts
    • Fringing
    • Bleed
    • Hue Warping
  • Reset button - Reset all settings on this tab only to their defaults.
  • Reset All button - Reset all settings on both NTSC tabs to their defaults.

Sound

Configure various sound settings here.

The default settings are those that are most accurate to a Super Nintendo.

  • Sound Switches:
    • Disable SPC Emulation - Disables the emulation of the SPC700 chip. Do not disable this unless you are having severe performance issues (i.e. ZSNES is unacceptably slow and you've tried everything else). Disabling this will likely result in sound errors.
    • Enable Sound - Default: Checked. Unchecking this disables sound output. Do not disable this unless you are having severe performance issues (i.e. ZSNES is unacceptably slow and you've tried everything else). If you wish to mute ZSNES, just move the volume slider down to 0%.
    • Enable Stereo Sound - Default: Checked. Unchecking this will disable stereo sound output; thus, sound output will be mono instead. Disabling this is a relatively safe way to improve speed, if necessary.
    • Reverse Stereo Channels - Reverse/swap the left and right stereo channels. This makes no difference if stereo sound is disabled.
    • Simulate Surround Sound - This is a novelty feature that simulates surround sound in games that don't have it natively. Do not use this in conjunction with games that have native surround sound. This option is only available when stereo sound is enabled.
    • Force 8-bit Output (DOS only) - Force ZSNES to output sound in 8-bit mode. Using this may work around problems with certain sound cards, but will reduce sound quality. Note that if you use stereo sound in addition to this option, you will not be able to use sampling rates above 22050Hz.
    • Use Primary Buffer (Win only) - Enable this only if your sound card is having problems designating the sound buffer with DirectSound. You must restart ZSNES for this feature to take effect.
  • Sampling Rate: - Default: 32000Hz. Click inside the black box to cycle through all available sampling rates. Note that if you use sampling rates that are below the default, the sound will be distorted and inaccurate. Sampling rates higher than 32000Hz can also cause problems; however, sampling rates of 41000Hz and higher may resolve crackling issues that occur with some onboard sound cards.
  • Volume Level - To change, just slide the bar. Sliding this to 0% is a better method of muting sound output than unchecking the Enable Sound box.
  • Interpolation: - This feature smoothes out the wave forms of lower frequency sounds.
    • None - Use no interpolation. This is not accurate to the SNES!
    • Gaussian - Default. Based on the Gaussian curve, it smoothes the transition of the sound effects. This method of interpolation is used by a real SNES.
    • Cubic Spline - This method is calculated by a cubic equation rather than being based on a curve like the Gaussian method. This results in better approximation than the Gaussian method.
    • 8-point* - Takes 8 points on the sound curve and smoothes them out.
  • LowPass: - Low-pass filters accentuate bass frequencies by reducing higher frequencies. None of these filters are native to the SNES; if you want authentic SNES sound, do not use any of these. Using a filter will probably be most noticeable if you have a subwoofer.
    • None - Use no low-pass filter.
    • Simple - Allows lower frequencies to pass through (e.g. drums and the like). Certain higher ranges are not heard though.
    • Dynamic - Allows greater range of frequencies to pass through; the music will seem more detailed depending on the loudness or softness of the audio.
    • Hi Quality* - It's better than the simple filter, and seems to work well with lower quality speakers that have decent sound cards.
  • *Requires MMX Support.

Paths

Set and change paths used for save directories, graphics packs, and base cartridges.

  • Saves: - Configure the directory where ZSNES will save and load SRAM, save state, and ZMV files. If you do not specify a path here, ZSNES Win and DOS will save all files to the same directory as the currently loaded ROM. ZSNES SDL will place them in ~/.zsnes. ZSNES SDL under Mac OS X will place them in ~/Library/Application Support/ZSNES.
  • Snapshots: - Configure the directory to which in-game snapshots will be saved. If you do not specify a path here, snapshots will be saved to your Saves directory (above).
  • SPCs: - Configure the directory to which SPC700 sound dumps (.spc; SNES music files) and sound buffer dumps will be saved. If you do not specify a path here, these files will be saved to your Saves directory (above).
  • BIOS/Base Carts - Set the path to BIOS and base cartridges of various special games.
    • BS-X: - Specify the full path and filename to the Broadcast Satellaview BIOS. Currently, the BIOS is not required to run BS games.
    • Sufami Turbo - Specify the full path and filename to the Sufami Turbo BIOS, which is required to play ST games.
    • Same Game: - Specify the full path and filename to the Same Game base cartridge ROM.
    • SD Gundam G-Next - Specify the full path and filename to the SD Gundam G-Next base cartridge ROM.
  • SPC7110 Graphic Packs - Enter the directories that contain SPC7110 graphic packs in the appropriate fields here. More information about this chip is in the Games page.
    • FEOEZ: - Far East of Eden Zero
    • FEOEZ-SJNS: - Far East of Eden Zero - Shounen Jump no Shou
    • MDH: - Momotarou Dentetsu Happy
    • SPL4 - Super Power League 4
Notes
  • One limitation of ZSNES is that it only accepts one case of input. Since most UNIX-based systems are case-sensitive, SDL port users should edit their paths in the configuration file instead.
  • Paths can be absolute (e.g. C:\ZSNES\saves) or relative (e.g. ..\..\saves).
  • If you are using the Win port, you can paste text from the clipboard into the text boxes by using the key combination Ctrl+V.
  • Remember to always press Enter or Return after typing in your path, or it may not work!

Saves

Configure various options regarding save states and in-game saves.

  • # of Rewind States - This sets how many times you can rewind back. Note that you must restart your game for this feature to take effect.
  • 1/5 Seconds Per Rewind - This sets how many fifths of a second ZSNES will rewind back each time.
  • Do Not Save SRAM - When enabled, SRAM will never be saved at any given point. This is useful when you want to look into savestates or movies without saving the modified data to disk. This also prevents SRAM Check+Save from working.
  • SRAM Check+Save - Normally, ZSNES will write SRAM data to disk when you exit the emulator or exit to the GUI. When this option is enabled, ZSNES will instead write SRAM data shortly after a game modifies it. If you have problems with in-game saves not working correctly, or if you fear something may prevent ZSNES from exiting normally (i.e. crashing), turn this on. The reason this is not enabled by default is because some games use SRAM as working memory instead of for persistent saved games. Since these games constantly modify SRAM, ZSNES would write to the disk every few seconds (if this option is enabled).
  • Load Save State w/SRAM - When enabled, the SRAM data from the save states you load will overwrite any other SRAM data for the game that you have. Beware, though: if you are really far in a certain game, loading an old save state from a point earlier in the game will make you lose all of your progress beyond that save state. However, this option may be needed to load complete states in certain games.
  • Start at Latest Save - With this enabled, every time you load a ROM, the save state slot containing the most recent save state for that game will be set as the currently selected slot.
  • Auto Increment Save Slot - When enabled, the save slot will automatically move to the next slot after you save a state. This option is very useful in that it decreases the risk of accidentally saving over a previous save state, if you forget to manually advance the chosen slot.
  • Auto State Save/Load - If this is enabled, ZSNES will automatically create a save state when you quit a game (either by loading another game or by exiting the emulator). When you return to the game at a later time, ZSNES will automatically load the save state it created before.
  • Pause After... - Press the P key to unpause.
    • Loading State - Pauses emulation after you load a save state.
    • Rewind - Pauses emulation after you press the rewind key.
  • State Shortcuts: - Click in a black box to assign a key to that function. Press ESC to clear the current assignment.
    • ST0 through ST9 - Choose which save state slot to use.
    • ST+ - Increment the selected save state slot by one.
    • ST- - Decrement the selected save state slot by one.
    • Save - Default: F2. Save a state to the current slot.
    • Load - Default: F4. Load a state from the current slot.
    • Pick - Default: F3. Open a dialog to choose the current save state slot. This will show a graphical preview of each save state. Learn more about how to use this dialog here.
    • Rewind - With each use, this key will backtrack the gameplay incrementally, according to the options you have set for '# of Rewind States' and '1/5 Seconds Per Rewind' (see above).

Speed

Change speed settings and frame skipping settings here.

  • Max Frame Skip - Set the maximum number of frames that may be skipped in direct sequence when rendering, only as needed to keep a constant emulation speed. Applicable only when using Auto Frame Rate (below).
  • Frame Rate - Set a static number of frames to skip rendering between each rendered frame, when not using Auto Frame Rate (below).
  • FastFwd Ratio - Set the number by which the default emulation speed will be multiplied while using Fast Forward.
  • SlowDwn Ratio - Set the number by which the default emulation speed will be divided while using Slow Down (e.g. "4" is 1/4 of normal speed).
  • Shortcuts: - Assign keys to various speed options.
    • Fast Forward - Default: ~ key. When used, the speed of emulation will increase (according to the FastFwd Ratio, above). Useful for quickly bypassing game intros or other sequences that you may not want to watch.
    • Slow Down - When used, the speed of emulation will decrease (according to the SlowDwn Ratio, above). This function requires having Auto Frame Rate (below) enabled. You might use this to watch very fast animated sequences, or to give yourself an advantage when you need to react quickly to something in the game.
    • + Emu Speed - Move the Emu Speed slider to the right by one step, increasing emulation speed sequentially (e.g. 1x -> 2x, 2x -> 3x, etc.).
    • + Frame Rate - Increase the static number of frames to skip rendering. Using this key will disable Auto Frame Rate.
    • Reset Speed - Sets the emulation speed back to normal (1x).
    • - Emu Speed - Move the Emu Speed slider to the left by one step, decreasing emulation speed sequentially (e.g. 1x -> 1/2x, 1/2x -> 1/3x, etc.).
    • - Frame Rate - Decrease the static number of frames to skip rendering. If you decrease it enough times, Auto Frame Rate will be enabled.
    • Pause Game - Default: P key. Pauses emulation.
    • Increment Frame - Only usable when emulation is paused, this feature will increment one frame each time the key is pressed.
  • Toggled FFwd/SlwDwn - When unchecked, you must hold down the Fast Forward or Slow Down keys for as long as you want them to operate. When checked, press and release the assigned key once to enable the desired mode, and once again to turn it off.
  • Auto Frame Rate - Default: Checked. When enabled, ZSNES will attempt to maintain emulation at full speed. If necessary to maintain full-speed emulation, ZSNES will skip rendering frames of video. When disabled, ZSNES will skip a static number of frames for each rendered frame. If your priority is full-speed emulation, you should have this enabled, and increase Max Frame Skip (above) to its maximum. If your priority is to have every frame of video rendered, you should either have this enabled and set Max Frame Skip to zero OR disable this and set Frame Rate (above) to zero.
  • Emu Speed: - Default: 1x. Only available when using Auto Frame Rate. This slider sets the number by which normal emulation speed will be multiplied or divided (to speed up or slow down emulation speed, respectively).

Cheat Menu

ZSNES GUI showing the Cheat Menu

The Cheat dialogs are only accessible if a game is loaded.

Read the Cheat Codes section in the Readme for general information.

Nach, the creator of NSRT, has a complete list of all official Game Genie codes.

Cheat Browser

Selecting Add Code from the Cheat menu opens this dialog with the cursor in the Enter Code: text box. Selecting Browse from the Cheat menu starts with the cheat list highlighted.

Use this dialog to add, remove, and browse cheat codes.

  • Cheat Browser - This lists all cheats that you have added for the currently loaded game. You can have up to 255 codes per game. Each cheat is represented on a single row (except in the case of multi-line cheats). Each column gives different information about the cheat, as follows:
    • Address - Memory address that the cheat edits.
    • CV - Current value of the selected memory address.
    • PV - Previous value of the selected memory address.
    • Tgl - Shows whether the cheat is toggled (active) or not.
    • Description - The description for the cheat that you typed into the Description: box when adding the cheat.
  • Buttons
    • Remove - Remove the currently highlighted cheat.
    • Toggle - Toggle on or off the currently highlighted cheat. This can also be accomplished by double-clicking on a code.
    • Save - Save all cheats in the list to a .cht file.
    • Load - If a .cht file exists in your saves directory, this will load all cheats from that file into the Cheat Browser.
    • Fix - If you have entered a cheat and it doesn't appear to work, you can try using this button to change the memory address that the cheat edits, which might fix the problem.
  • Enter Code: - Type in the cheat code. Game Genie, Pro Action Replay, and GoldFinger codes are supported. Remember that Game Genie codes require the - (dash).
  • Description: - Type in a description for your code.
  • Add button - Add the code to the Cheat Browser once you have filled in the previous two boxes.
  • Auto-load .cht file at game load - When you load a ROM, ZSNES will look in your saves directory for a matching .cht file, and load it. This prevents you from having to hit the Load button, above.
Notes on usage
  • To use a multi-line cheat code, just enter each line as a separate code!
  • You can also quickly modify the value of the currently selected cheat code (in the browse window) by typing a 2 digit hex number in the cheat code enter space.
  • You can allow a value of one cheat code to be mirrored from a value of another cheat code. To do this, type an 'R' at the end of any cheat code as the destination, then type another cheat code (Without the 'R') as the source. For example, if you want address 7E1000 to reflect the value at address 7F2000 (whatever value written to 7F2000 from the game will also be written to 7E1000), enter cheat code 7E1000FFR, then cheat code 7F2000FF (where FF can be any value).
Keyboard usage
  • Use the Up and Down arrows to scroll through the Cheat Browser.
  • Use the R, T, S, L, and F keys to duplicate the functions of the five buttons below the Cheat Browser.
  • Use Tab to move from the Enter Code: box to the Description: box.

Search

Selecting Seach from the Cheat menu opens the Cheat Search dialog. Use this to search for values in memory such as life, score, etc. and change their values as you please.

Setup Search
  • Select Size and Format:
    • Size: You can choose the data size to use in your search. If you know the numerical values of the data you want to view, select the smallest number range that fits the data values. (For example, if you know the value cannot go higher than 50000, select 2 BYTES [0..65535] instead of 3 BYTES [0..16777215]). Sometimes you don't know the numerical value (in the case of life bars), so you have to guess the size.
      • 1 Byte [0..255] - Value is stored in 8 bits.
      • 2 Bytes [0..65535] - Value is stored in 16 bits.
      • 3 Bytes [0..16777215] - Value is stored in 24 bits.
      • 4 Bytes [0..4294967295] - Value is stored in 32 bits.
    • Format: In general, it's recommended that you use decimal, although there are some cases that have the values in memory stored as binary-coded decimal. For example, "34 lives" could be stored in a byte as 34h, and if you were searching for it in the decimal mode, it would actually have a value of 52.
      • Dec (Base 10) - The number you search for will be treated as a decimal number.
      • Hex (Base 16) - The number you search for will be treated as a hexadecimal number.
  • Select Search Type:
    • Exact Value Search - In this mode, you have to enter the exact numerical value that you want to find. If you have 3 lives left, then search for the value 3. The cheat search engine also looks for "value - 1" since even if a game tells you that you have 3 lives left, it usually stores the value as 2 in memory.
    • Comparative Search - In this mode, you select whether the value is less than, greater than, equal to, or not equal to the previous value. So if you have a life bar and the life bar suddenly decreases, go back to the cheat search engine and select "less than" to search for any value that has decreased.
  • Start button - Move to the next step of the search, entering a value.

Exact Value Searches

Input Value
  • Enter Value: - Enter the value for which you want to search and press the Search button.
  • Max Value: - This is a reminder of the maximum value for which you can search. Change this on the Setup Page (first step).
  • # of Results: - Displays the number of results for the current search. Before you start a search, this will display the number of searchable memory addresses for the currently loaded game.
  • Buttons
    • Restart - Move back to the Setup Page to change options.
    • View - View the results of the current search. If you have not yet run your own search, this will display all searchable memory addresses for the currently loaded game.
    • Search - Search for the value you entered in the box above. After you press this button, this page will change to reflect the number of results for your search. Press the View button to see those results.
View Results

This page lists all the results of your current search. If you pressed the View button before running a search, this page will list all searchable memory addresses for the currently loaded game.

This list has two columns, the left column showing the memory Address, the right column showing the Value at that address.

  • Return - Move back to the Input Page.
  • Add - Use this to select the currently highlighted address for editing.
Add Cheat

On this page, you can add the previously selected memory address as a cheat.

  • Enter New Value: - Enter a value to insert into the memory address.
  • Enter Cheat Description: - Do just what it says.
  • PAR Code Equivalent: - This box will display the equivalent Pro Action Replay code for the value and memory address you are working with.
  • Max Value: - This is a reminder of the maximum value for which you can search. Change this on the Setup Page (first step).
  • Use Only Upper Byte - Use this option to change how PAR Code Equivalent is calculated.
  • Return button - Return to the Results Page.
  • Add button - Add the new cheat to the Cheat Browser.

Comparative Searches

This section isn't finished yet. Hopefully you can figure it out given the description of Comparative searches in the Cheat Setup dialog, above.

  • New Value Is...
    • > Old Value -
    • < Old Value -
    • = Old Value -
    • != Old Value -
  • # of Results: -
  • Restart -
  • View -
  • Search -

Netplay Menu (Win and SDL ports only)

ZSNES GUI showing the Netplay Menu for the Windows and SDL ports

Netplay has been disabled for the indefinite future, until the core becomes more accurate and/or non-random. We recommend using ZSNES v1.36 or v1.42n until this is resolved.

Internet

  • Port - Default: 7845. This is the port on which ZSNES will communicate. While the number can range from 0 to 65535, it is recommended you stay above 5000 to avoid conflicts with other services.
  • Nickname - This is the name you will use, displayed in the Chat window (which appears once you connect).
  • Start as Server - Use this button to be the host of the Netplay game. Your opponent will connect to you and be the client.
  • Client Options: - Setup options here if you are going to be the client, not the host.
    • IP: - Enter the IP address of the host.
    • Connect to Server - Use this button to attempt to connect to the above-entered IP address.
  • Your IP: - Helpfully displays your current IP address. If you are going to be the host, give your opponents this number so they can connect to you.
  • Use UDP instead of TCP - Decide which protocol to use for communication. TCP guarantees delivery of packets, but has more overhead, and may thus be slower than UDP. Try switching between the two to see which works best.

Establishing a Connection (Chat Window)

  • Window - This is quite obvious. You and your partner chat to each other through this window. Simply type your message and press Return/Enter on your keyboard, just like on an IRC or IM client.
  • Player Select - This indicates which players will be hosted locally and which will be hosted remotely. A checked box means that your computer will have control of that player. An 'X'ed box means the remote computer will have control of that player. A blank box means that player is not enabled.
  • Latency - Default: 3. ??????????????????
  • Back Buffer - Default: Enabled. ??????????????????
  • Save Data - Determine whether the SRAM from your computer (local) or the other computer (remote) should be used. You can also choose to not load any SRAM at all.
  • Disconnect - Closes the connection and ends the netplay session.

Misc Menu

ZSNES GUI showing the Miscellaneous Menu

Misc (Miscellaneous) Keys

Here you can change various function keys that are not configured elsewhere. Clicking inside a black box will bring a box, prompting you to assign a key to that function. Press the key you wish to assign, or press ESC to clear the existing assignment.

  • BG Disables:
    • BG1 through BG4 - Toggle the various background layers on or off.
    • OBJ - Toggle the sprite/background layer on or off.
  • Sound Keys:
    • Ch1 through Ch8 - Toggle the various sound channels on or off.
    • +Vol - Increase the volume.
    • -Vol - Decrease the volume.
  • Quick Keys:
    • Load - Opens the Load dialog (accessed from the Game menu).
    • Reset - Performs a soft reset of the game. Also available under Game->Reset.
    • Exit - Exits ZSNES.
    • Clock - Toggle the clock, displaying system time on-screen during gameplay.
    • Chat - This is available only while using Netplay. After pressing this key, type your message, then press Enter/Return to send it to the other user.
    • Snapshot - Save a snapshot of the game screen and place it in your Snapshots directory. Also accessible through the F1 Menu.
    • Save SPC - Save SPC data to your SPCs directory. Also accessible through the F1 Menu.
  • Misc Toggles:
    • Use PL12/34 - Toggles on or off the Use Pl3/4 as Pl1/2 option.
    • Panic Key - Restores default settings for several toggles. Enables Offset Mode, Windowing, and all Backgrounds, Sprites, and Sound Channels; disables Add-ons; resets Emu Speed throttle.
    • Display FPS - Toggles on or off the Frames per Second counter. Also accessible through the F1 Menu. You can also make this a persistent option under Config->Options.
    • Battery Power (Win/SDL only) - Displays the amount of battery life remaining and, if possible, time remaining, as reported by your operating system. This feature is intended for laptop or notebook PCs.
  • GFX Toggles:
    • New GFX Engine - Switches between the faster, newer graphics engine (default) and an older one. The new one is recommended, but using the older one may fix graphics corruption in some games.
    • BG Window - A graphical feature that toggles windowing effects in certain SNES games.
    • Offset Mode - A graphical feature that toggles using offsets for tiles in certain SNES games.
    • + Gamma - Increase gamma level. This makes the video appear brighter.
    • - Gamma - Decrease gamma level. This makes the video appear darker.

GUI Opts (Options)

Configure various GUI settings not set elsewhere (like Config->Options).

  • GUI Switches:
    • RClick Opens GUI - When enabled, clicking the right mouse button will switch to and from the GUI when running a game (similar to pressing ESC). However, this can slow down emulation, since ZSNES has to check the mouse button status once in a while. If you are running in a windowed video mode, the right-click button won't return back to the game.
    • Swap L/R MButtons - Enabling this will swap the functions of buttons 0 and 1 of your mouse.
    • Show Mouse Shadow - Disables/Enables the mouse shadow.
    • Mice Wrap GUI Win - Allows the mouse pointer to wrap (to the other side of the screen) at the borders of the screen. You should probably only enable this while in Fullscreen; in Windowed mode this behavior can be annoying.
    • Trap Mouse Cursor (Win only) - Prevents the mouse cursor from exiting the ZSNES GUI. You will have to move the mouse with extra speed to make the cursor exit the GUI with this feature enabled.
    • Wheel Mice Scroll (Win only) - This feature allows you to use your mouse wheel to quickly scroll through various lists in the GUI (e.g. game list in load menu, video modes, etc.). In the SDL port, the Wheel should always be enabled.
    • ESC to Game Menu - While running a game, pressing Esc will take you back to the GUI with the Game Menu open, regardless of which menu was open last. It will also make the Game Menu be already open when you start ZSNES. If this is unchecked, you will have difficulty navigating the GUI without a mouse.
    • Ctrl GUI w/GPad1 - When enabled, it allows you to use the device configured for SNES Controller #1 to access the GUI. This way you can use your gamepad or joystick instead of your mouse/keyboard. The equivalent SNES keys to the keyboard keys are:
      • SNES D-Pad = Move mouse cursor
      • SNES A = Enter
      • SNES B = Esc
      • SNES L = PageUp
      • SNES R = PageDown
    • Filtered GUI - Any video filter settings will be applied to the GUI, in addition to the game video output.
    • Use Custom Font - When checked, ZSNES will load font data from zfont.txt.
    • Save GUI Win Pos - When enabled, the GUI doesn't reset the locations of the windows when you exit/enter the GUI.
  • BG Effects: - Only one of the following screen saver-like effects can be enabled at a time. They are visible in the background while the GUI is open.
    • None - no effect is active.
    • Snow - Looks like falling snow.
    • Burning - Looks like fire rising from the bottom of the window.
    • Smoke - Looks like smoke rising from the bottom of the window.
    • Water A - Looks like a water strider skimming across water.
    • Water B - Looks like rain drops falling on water and creating ripples.
  • Color: - This section allows you to customize the colors used by the GUI.
    • Choose which part of the GUI to configure by selecting one of the following:
      • Back - Configure the color of the background of the GUI. Defaults: R=10; G=15; B=31.
      • Title - Configre color of the GUI's title bar. Defaults: R=0; G=10; B=31.
      • Win - Configure the background color of a dialog window. Dialog title bar colors are not configurable. Defaults: R=8; G=8; B=25.
    • Use the sliders to change the relative quantities of Red, Green, and Blue color for the part of the GUI you have chosen to configure.
  • Main Windows Options:
    • Emu Always on Top (Win only) - ZSNES will stay visible above other windows, even if it loses focus. Minimize ZSNES if you need to access other windows.
    • Save Main Window Position (Win only) - Saves the location of the ZSNES window between sessions.
    • Allow Multiple Instances of Emu (Win only) - Allows you to open more than one instance of ZSNES at a time. In the SDL port, multiple instances are always allowed.

Movie Opt (Options)

The Movie Options dialog is only accessible if a game is loaded.

You can record your gameplay so that you can play it back at a later date either to amuse your friends, torture your friends, or whatever. Also be sure to check out the Movies section of the Readme, where you can find more information on subtitles, re-recording, and more.

Warning: Playing back a previously recorded movie will overwrite any SRAM data for the current game with the SRAM data contained in the ZMV file. This means you should back up your SRAM files when playing around with movies!!

  • Select Movie: - Choose the movie recording slot to be used for recording/playback. The number of the slot corresponds to the ZMV extension (0 corresponding to .zmv, 1 to .zm1, ... 9 to .zm9).
  • Status: - Simply tells you if a record/playback is currently in progress.
Controls tab
  • Record From:
    • Now - Begins recording the movie from the current point in the game.
    • Power - This will perform a hard reset (equivalent to shutting off the SNES, then turning it back on again), then begin recording.
    • Reset - This will perform a soft reset (equivalent to using the Reset button on the SNES), then begin recording.
    • Power+SRAM Clear - Performs a hard reset, then clears SRAM data (in-game save data). Useful if, for example, you don't want to see your saved games in the game menu when making your movie.
  • Main controls:
    • Play - Begins playing the movie that is recorded in the current slot.
    • Record - Begins recording a movie to the current slot. While in playback mode, you can use this to start recording and redo the remainder of the movie.
    • Stop - Stops playing or recording a movie.
    • Append - This is usable only if you already have an existing ZMV using the new ZMV format. It allows you to continue recording a movie from the point where it is stopped. Press this button only when the movie status is inactive.
  • Chapters: - You can assign a key to each of these functions by clicking in the black box next to each button and pressing a key.
    • Insert - During recording or playback, this can create a point (chapter) to which you can seek during playback.
    • Previous - Only usable during playback, this "rewinds" the movie to a previous chapter earlier in the movie.
    • Next - Only usable during playback, this "fast forwards" the movie to a chapter that is found at a later point in the movie.
    • There is currently no method for deleting a chapter.
  • On Movie State Load: -
    • Do Not Switch Modes -
    • Switch to Record -
    • Switch to Playback -
  • Display Frame Counter - Enable this to see the frame counter in the bottom-left corner of the screen during playback/recording. This is useful for determining where you can insert movie subtitles and for deciding where you want to end a movie when dumping it with the Dump # of Frames option.
Dumping tab

Video/Audio Dumping is recommended only for advanced users. More information is found in the Movie Dumping section of the Advanced Usage page.

  • Video Options - You can only choose one of the following:
    • No Video Dump - Use this option when you want only audio.
    • Raw Video (No compression) - Dump raw 24 bit BGR video. Using this option produces a file that no typical media player can read. Only use this option if you plan on manually encoding it. Caution: Raw movies require a tremendous amount of disk space, so make sure you have plenty of room before you begin!
    • FFV1 (Some compression) - Dump in an AVI container using FFMPEG's lossless video codec. The size of this file will be about 8% of the size of the raw video file.
    • x264 Lossless (Most compression) - Dump in an AVI container using the very advanced x264 codec in practically lossless mode (slow). The size of this file will be about 38% of the size of an XviD file, about 6% of the size of an FFV1 file, and about 0.5% of the size of a raw video file.
    • XviD Lossless (More compression) - Dump in an AVI container using the popular XviD codec in practically lossless mode (fast). The size of this file will be about 15% of the size of an FFV1 file, and about 1% of the size of a raw video file.
    • Custom - Uses alternative, user-defined parameters from the zmovie.cfg file.
  • Audio Options - You can choose any combination of the following:
    • Dump Audio - Enable audio dumping.
    • Compress Audio - Audio output will be compressed to MP3 as it is dumped. We recommend that you use this setting. When unchecked, audio output will be in WAV format.
    • Merge With Video - Place the outputted audio in the AVI along with the video.
  • Dump # of Frames - When checked, this sets the exact number of frames of the movie to be dumped, according to what you have typed in the black box at the right. This overrides the length of the movie, which normally determines the length of a video/audio dump.
  • Dumping:
    • Start - Start dumping the movie in the selected slot, using the current settings.
    • Stop - Use this to stop dumping a movie before the process has finished.

Saving or loading a state during recording will allow you to undo mistakes, i.e. re-record, while making a movie. These states created during record can also be loaded during playback, like chapters. However, unlike chapters, you're limited to 100 of them.

Loading another game will halt the play/record process.

Movie dumping options can be tweaked by advanced users in the zmovie.cfg file.

Key Comb. (Key Combination Editor)

Allows you to specify certain keyboard combination routines with a single keystroke/joystick button press.

  • List of combinations
  • Clear - Clears the current key combination field.
  • Add - Adds the key combination fields below as a new entry.
  • Replace - Copies the contents of the key combination fields below to the current highlighted key combination above.
  • Delete - Deletes the highlighted key combination above.
  • Key - Clicking on this box will allow you to select which key/button to use.
  • Description - Allows you type in the description of the combination key.
  • P# - Selects which player # will use those keys.
  • > = Last </> - Enabling this would mean that the event symbol > will mean the last left or right direction the user presses in the game and the symbol < is the opposite of that direction. When disabled, > means right and < means left.
  • Game Specific - Enabling this will tell ZSNES to use separate key combination files for each individual game.
  • Combination Keys - This window will display the sequence of events selected by the user.
  • Events:
    • Press+Rel - The key will be pressed and held. It will be released once another key is pressed after any amount of frame or second delay.
    • Press Only - The key will be pressed and held.
    • Rel Only - The key will be released if it is pressed by a press only event.
    • Frame Delay - Delays for the specified number of frames.
    • Second Delay - Delays for the specified number of seconds.
    • Del - Deletes the event at the end of the combination keys list if one exists.

Note: A 1 frame delay exists after the combination key list has finished processing.

Example Key Combination: (Down / Down+Right / Right / L):

  • Method 1: Press+Rel Down / 2 Frame Delay / Press+Rel Down / Press+Rel Right / 2 Frame Delay / Press+Rel Right / 2 Frame Delay / Press+Rel L
  • Method 2: Press Only Down / 2 Frame Delay / Press Only Right / 2 Frame Delay / Rel Only Down / 2 Frame Delay / Rel Only Right / Press Only L

Save CFG

Saves the configuration files. ZSNES normally writes to the configuration files on exit. This function overrides the "cfgdontsave" option in the .cfg file.

About

Just shows some information about ZSNES.

  • Version number
  • Build date
  • Port name
  • www.ZSNES.com button (Win/SDL only) - Opens your default web browser and loads the ZSNES.com Home Page.
  • Documentation button (Win/SDL only) - Opens your default web browser and loads the ZSNES Documentation Home Page.
  • Coded By: - Main developers are listed. More information in the About page of the documentation.
  • Assistant Coders: - Assistant developers are listed. More information in the About page of the documentation.
  • Disclaimer. Please read the GNU General Public License.

F1 Menu

The F1 menu, which gives quick access to a number of frequently-used features

Use this menu to access oft-used functions. Most of these are related to dumping data from the game you are running.

  • Save Snapshot - Creates an image of the game screen in your Snapshots directory.
  • Show/Hide FPS - Shows or hides the frames-per-second display which appears on the bottom-left corner of the screen. The value shown on the right side of the display is the rate that the SNES should be maintaining. This counter is available only when in auto frame rate mode. You can have this display enabled by default under Config->Options.
  • Save SPC Data - Using this will search for the beginning of the next song and save the data into an SPC file. To capture a song, it is best/recommended to initiate this feature approximately 2 seconds before the next song starts. This does have potential to fail though, so don't expect it to work all the time. The .spc file will be placed in your SPCs directory.
  • Sound Buffer Dump - This dumps ZSNES' sound buffer and also filters out any unoccupied space. The sound buffer contains decompressed samples which are written to when ZSNES plays/decodes a sample from sound memory. Because of the way ZSNES buffers the sound data, this can produce inaccurate results. The dump will be placed in your SPCs directory.
  • Snapshot/Incr Frame - Same as snapshot, but it returns to the F1 menu after a couple of frames. Useful for making animations.
  • Incr Frame Only - Move forward one frame without taking a snapshot.
  • Move This Window - Moves the F1 menu to a different location.
  • Image Format: - Choose what image format to use for snapshots of the game screen. This setting is also configurable under Config->Options.
    • BMP - Snapshots will be saved as bitmap pictures (16-bit color). If you are using an 8-bit video mode in the DOS port, the bitmap will be saved with 8-bit color.
    • PNG - Snapshots will be saved as PNG files (32-bit ARGB color).

Save State Slot Chooser

The Save State Slot chooser screen, which allows you to quickly choose a save state slot using a graphical preview.

Use this dialog to pick which save state slot to use. A graphical preview of the save state will be shown above this dialog (it is not visible in the above picture).

How to Use:

  1. Press F3 to open this dialog.
  2. Use Up / Down arrow keys to move between save state levels.
  3. Use Left / Right arrow keys to move between save states on a certain level.
  4. Use Enter or Return or ESC to use the selected save slot.
  5. Use either F2 to save a state or F4 to load a state in the slot you just selected.

Color Key:

  • Slots with blue backgrounds do not have a save state in them.
  • Slots with red backgrounds have a save state in them.
  • The slot with the orange background contains the most recent save state within that state level.

Footer

This documentation is best viewed in a standards-compliant web browser, like Firefox or Opera.


Netplay - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
    • Things To Know
    • Recommendations
    • Simple Instructions
    • Loading a Game
    • Configuring
    • Troubleshooting
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

Netplay

Netplay has been disabled for the indefinite future, until the core becomes more accurate and/or non-random. We recommend using ZSNES v1.36 or v1.42n until this is resolved.

Things To Know

  • ZSNES currently limits Netplay to two computers. Up to five players can still play, however (by having more than one physical player at either of the two computers).
  • A game must be on each computer in order to have it available for Netplay.
  • You cannot use cheat codes, key combinations, or turbo keys in Netplay.

System Recommendations for Smooth Netplay

  • Both users must use the same version of ZSNES (e.g. Both users should be using v1.36).
  • Both users should be using reasonably fast computers (about 800mhz). If one user has a slow computer (e.g. 200mhz) while the other has a fast one, the slow computer's low framerate will bog down the fast computer, causing poor framerates on the fast computer.
  • Both users should be using the same setting for sound (either enabled or disabled; see the Config-->Sound menu in the GUI or the ZSNES configuration file).
  • Back Buffer must be enabled and the latency value must be 3 or 2 (reduce it to 2 for fast-paced platform games).
  • The games have to run at least 50 FPS on BOTH computers without Netplay. This can completely depend on factors such as CPU, video card, video mode, and the game you are running. (See System Requirements).
  • Both users must use the same protocol setting (either UDP or TCP). If both players are on the same LAN, you should use UDP (it has lower overhead). Otherwise, use TCP (no packet loss).
  • You will also need an Internet connection with ping times of less than 400ms between both connections. The higher than ping time, the worse the Netplay experience, since ping times measure the time it takes for data to get to the other side and back. You can expect a not-so-great performance if you have a ping time of 400 or greater.

Simple Instructions

  1. Go to Netplay -> Internet.
  2. Decide who will be the server and who will be the client. (Neither has the gameplay advantage since ZSNES treats both the same after a connection is established).
  3. If you are the server, send the IP that is shown on the connection window to your friend (e.g. through any chat program (ICQ, AIM, IRC, etc.)). Then click on 'Start Server'.
  4. If you are the client, type in the IP address that your friend has given you and then click on 'Connect to Server'.
  5. Chat with your friend on what game to play.
  6. Once decided, make sure that the filename on both sides are the same and that the load window points to the directory where the filename is.
  7. Load the game.
  8. Have fun! (If it worked)
  9. If it said 'Checksum Mismatch', try uncompressing the file if it is compressed. If not, then both sides have a different version of that ROM (e.g. One side has the Japanese version while the other has the English, or both versions are English, but are different version releases of the same game).
  10. If you want to chat in-game, press 'T' and type in your line. You can change this key in the Misc -> Misc Keys options from the GUI.

Loading a Game

Once successfully connected, the chat window should open up.

From there, you can load a game as you normally would. But in order to load a game, both sides must have their load window pointing to the directory where the game is located and also have identical filenames for the game. Only one side has to load the game; after that, the other side will automatically load the game without the user's interaction.

If an error pops up saying 'ROM data mismatch', then it means that either side has a different version of the ROM. This error sometimes happens with compressed files even when both files are the same, so it is recommended that you uncompress the games and try again if this error occurs.

Configuring Options

The default settings are recommended.

However, if your computer is slower than 266 MHz, then it is recommended that both sides play with back buffer disabled. Note that disabling this will degrade controller response.

You can increase the latency value if the average ping time between both connections is high (you can tell if the gameplay runs too jerky).

Reducing the latency value when back buffer is enabled will improve controller response time. However, this will cause the remote player to jump around more in order to keep both sides in sync.

For controller options (PL1, PL2, PL3,..), the first checkmarked player would be using Input #1 of the local side. The second checkmarked player would be using Input #2 and so on. Players marked with an 'X' are checkmarked on the remote side.

Troubleshooting

  • If you are the client, and it failed to connect, check to make sure that the IP you entered is correct and that you are properly connected to the Internet.
  • If you are the server, and the IP provided in the connection window doesn't seem to be the correct one, you can visit http://www.whatismyipaddress.com to determine the correct one. Then tell your client what it is so he or she can connect. Alternatively, if you're using mIRC, just type /dns <nick>.
  • If the client says 'Found Client' and nothing else happens, chances are that your net connection does not support UDP. If this is the case, both sides will need to uncheck 'Use UDP Instead of TCP'. However, it is strongly recommended that you use UDP if possible since it is much faster than TCP.
  • If you have Windows 95 and you are getting a init failed error, you should download and install the Winsock 2.0 update for Windows 95. Warning: Do not install this if you do not have Windows 95.
  • You may need to disable your firewall (or just disable it for UDP port 7845) in order to get the UDP protocol that ZSNES's Netplay uses to work.
  • Internet Connection Sharing users (Win9x systems) may need to download an ICS configuration utility to get the connection to work and map UDP port 7845. You can use "ICS Configuration".
  • If you need help forwarding your router port, you may refer to AntoineWG's Router Port Forwarding Guide. It is currently available in this thread on the ZSNES Message Board.
  • Tips for reducing general slowdown can be found under "Why is ZSNES slow?" in the Speed section of the FAQ page.

Footer


Advanced Usage - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
    • Movie Dumping
    • Configuration Files
    • Debugger
    • KitchenSync
    • Command-Line
  • Games
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

Advanced Usage

This page documents the advanced features of ZSNES, probably not useful for most end users.

Movie Dumping

Please note that ZSNES does not support real-time video encoding. ZSNES only encodes existing ZMV (ZSNES movie) files. Refer to the GUI page for instructions on recording movies.

All instructions in this section assume that you are using the default settings of the zmovie.cfg file. If you are smart enough to edit zmovie.cfg, you had better be smart enough to dump movies with whatever new settings you've created.

You can dump video output alone, audio output alone, both at the same time (to separate files), or both to the same file (merged). If you choose to dump audio output, you can choose to dump that audio output uncompressed or compressed to MP3. Both uncompressed and compressed audio can be merged with the video.

About Video Encoding

Video encoding requires MEncoder.

About Audio Encoding

Audio encoding requires LAME. Currently, Windows users must use this fixed LAME build due to a bug in the official versions.

You have a choice of dumping audio either in uncompressed PCM format with WAV header, or compressed as MP3. ZSNES uses LAME for MP3, so you can expect high-quality audio, given the bit rate.

When dumping audio to a separate file (not merged with video), audio compressed to MP3 will be about 6% of the size of the same uncompressed PCM audio.

Dumping a Movie

  1. Place your MEncoder (mencoder.exe) and LAME (lame.exe) binaries in the same directory as ZSNES. Alternatively, configure your PATH environment variable to include the directories where MEncoder and LAME are installed.
  2. Start ZSNES and load a game.
  3. Open the Movie Options dialog. (Misc Menu->Movie Opt).
  4. Make sure to select the correct movie slot, depending on which movie slot you used to record a ZMV.
  5. Configure the Dump Video and Dump Audio options to your liking.
  6. Hit the Dump Movie button.
  7. ZSNES will then exit the GUI and start playing back the previously recorded movie. If you chose to encode the video and/or audio output, you will see a console window appear, showing the progress of encoding. Don't worry if ZSNES slows down while playing back the movie; it needs to do this because the encoding process takes a lot of processor time.
  8. ZSNES will indicate when the movie has finished playback (and encoding). You can now look in your ZSNES directory for the newly created file(s).

Note: ZSNES does not create an uncompressed temporary file and then encode it. Instead, the output stream is directly encoded. The only output files will be the finished, compressed files. Because ZSNES must encode the output stream as it is generated, ZSNES may delay the output of new frames of video/audio to give more time to MEncoder/LAME to compress the current frame. This means that you should not worry if you see the playback of your movie slow down while ZSNES is dumping it. The dumped file(s) will play back at full speed!

Configuration Files

Every time you run ZSNES, it checks to see if these files are present in the same directory as the ZSNES executable. If they are not, ZSNES will create them with their default values. Thus, if you are having weird problems with ZSNES, try deleting these files.

If there are any missing or invalid lines in zsnes*.cfg, ZSNES will insert or replace the lines with their default values.

zsnes*.cfg

Almost every option available in ZSNES can be configured in this file. If there is something you don't understand in this file, please refrain from changing it, and instead set the option from within the ZSNES GUI.

The last letter of the filename is different for each port. Windows: zsnesw.cfg. SDL: zsnesl.cfg. DOS: zsnes.cfg.

zmovie.cfg

This file contains movie-dumping configuration information.

You can edit this file to make ZSNES use something other than MEncoder or LAME, or to tweak options. Read the MEncoder and LAME manuals to see what options you can tweak. If you choose other applications, they must support stream input via stdin and raw video (in the case of video encoding). Refer to the appropriate documentation for more information.

Unfortunately, you're on your own if wish to play with this.

zfont.txt

This file contains the font data for the ZSNES GUI. You can edit this file to customize the font.

  • Comments are preceded by a ; and can be up to 99 characters in length.
    • In the default file, each comment precedes the character it's labeling.
  • Each letter is represented by a block of five rows, each containing 8 bits. Only the first five columns of bits are used for font data; ZSNES uses a 5x5 font. The last three columns of bits should always be zeros.
    • There are characters for English, Hiragana, and Katakana scripts.
  • In case it isn't obvious, a 1 means the pixel is on in that location. A 0 means it's off. If you view zfont.txt, you should be able to figure it out.
  • The file terminates on the EOF+newline character or the last character (whichever comes first).

The absolute ordering of each and every line in this file is important. If you're missing a single line, things might start messing up. Just so you know, the last line of data should be on line 846, followed by the EOF character on line 847.

If you mess something up, just delete zfont.txt, and ZSNES will re-generate it as normal.

Debugger

The debugger, now available in all ports, is enabled only when you enter ZSNES with a -d. (If you are using the DOS port, just type "zsnes -d" at the commandline. Win port users should add a "-d" after their ZSNES shortcut target). Loading a ROM via a command line will start ZSNES in debugger mode; otherwise press F1 to reach it.

Average users, however, should have no need to use the debugger.

Debugger Keys:

Key | Function
1 | Enable/Disable SPC700 display
2 | Enable/Disable 65816 display
T | Trace (in 65816 opcodes)
B | 65816 break point
S | SPC break point
C | Clear counter
M | 65816 modify
A | SPC modify
D | Debug dump (SPC/DSPRAM dump only)
W | Break at signal (used only by the programmers)
F1 | Switch between debugger input and game input
F2 | Save state
F4 | Load state
Esc | Exit entire program

KitchenSync (Win port only)

This makes NTSC games (60Hz) run at 120Hz, and PAL games (50Hz) run at 100Hz. To enable it, just start ZSNESw with the -ks switch. Alternatively, you can create a shortcut to ZSNESw that starts with this switch enabled, every time. First create a shortcut to ZSNESw in Windows. Next, right-click on the shortcut and choose Properties. Then, put the cursor right after the quotation marks in the Target box, press the space bar, and type -ks. Finally, click OK. If ZSNESw crashes or refuses to start after enabling this, your monitor does not support the 100/120 Hz refresh rate.

If your monitor supports 100Hz and not 120Hz, you can instead use the -kp switch for PAL only. This way, you will not have to disable the -ks switch every time you wish to play an NTSC game.

Command-Line Arguments

ZSNES supports execution arguments via the command line. More detailed descriptions of how to use the arguments with each port is forthcoming.

Clicking on the description of an argument will take you to the corresponding GUI option, if one exists.

Usage : zsnes* [-d,-f #, ... ] filename.sfc

Example : zsnes* -s -r 2 game.sfc

*Fill in the appropriate letter for your port when entering this into the command line.

Universal Switches

Argument | Sub-Argument | Description
-1 #/-2 # |  | Select Player 1/2 Input
 | 0 | None
 | 1 | Keyboard
-d |  | Start with debugger enabled
-dd |  | Disable sound SPC700/DSP emulation, which also disables sound output
-dh |  | Disable ROM-specific hacks
-ds |  | Disable sound output
-f # | [0...9] | Enable fixed frame rate
-g # | [0...15] | Specify gamma correction value
-h |  | Force HiROM
-j |  | Disable Mouse (Automatically turns off right mouse-click)
-k # | [0...100] | Set volume level
-l |  | Force LoROM
-m |  | Disable GUI (must specify ROM filename)
-mc |  | Exit ZSNES when closing a movie (use with -zm)
-md # |  | Dump video (use with -zm)
 | 1 | Raw
 | 2 | FFV1
 | 3 | x264
 | 4 | XviD
 | 5 | Custom
-n # |  | Enable scanlines (when available)
 | 0 | None
 | 1 | Full
 | 2 | 25%
 | 3 | 50%
-o |  | Disable MMX support
-p # | [50...150] | Percentage of instructions to execute
-r # |  | Set sound sampling rate
 | 0 | 8000Hz
 | 1 | 11025Hz
 | 2 | 22050Hz
 | 3 | 44100Hz
 | 4 | 16000Hz
 | 5 | 32000Hz
 | 6 | 48000Hz
-s |  | Enable sound output and enable SPC700/DSP emulation
-sa |  | Show all extensions in GUI (*.*)
-t |  | Force NTSC timing
-u |  | Force PAL timing
-v8 |  | Grayscale mode
-y |  | Enable Interpolation graphics filter
-z |  | Disable stereo sound
-zm # | [0...9] | Auto load specified movie slot on startup
-zs # | [0...99] | Auto load specified save state slot on startup

Windows-only Switches

From the Windows NT command-line, you can use the following command to view the accepted command-line input for a given ZSNES binary: zsnesw -? | more. Typing zsnesw -? does not work.

Users of any flavor of Windows can use the following command to output to a file the same information returned from the command above: zsnesw -? > commands.txt.

Argument | Sub-Argument | Description
-3 |  | Enable triple buffering (disables VSync)
-6 # | [50...180] | Force a user-specified refresh rate for fullscreen modes
-js # | [0...32767] | Set joystick sensitivity
-kp |  | Enable the KitchenSync for PAL only (100Hz)
-ks |  | Enable the KitchenSync for NTSC and PAL (120Hz/100Hz)
-v # |  | Select Video Mode:
 | 0 | 256x224 R WIN
 | 1 | 256x224 R FULL
 | 2 | 512x448 R WIN
 | 3 | 512x448 DR WIN
 | 4 | 640x480 S WIN
 | 5 | 640x480 DS WIN
 | 6 | 640x480 DR FULL
 | 7 | 640x480 DS FULL
 | 8 | 640x480 S FULL
 | 9 | 768x672 R WIN
 | 10 | 768x672 DR WIN
 | 11 | 800x600 S WIN
 | 12 | 800x600 DS WIN
 | 13 | 800x600 S FULL
 | 14 | 800x600 DR FULL
 | 15 | 800x600 DS FULL
 | 16 | 1024x768 S WIN
 | 17 | 1024x768 DS WIN
 | 18 | 1024x768 S FULL
 | 19 | 1024x768 DR FULL
 | 20 | 1024x768 DS FULL
 | 21 | 1024x896 R WIN
 | 22 | 1024x896 DR WIN
 | 23 | 1280x960 S WIN
 | 24 | 1280x960 DS WIN
 | 25 | 1280x960 S FULL
 | 26 | 1280x960 DR FULL
 | 27 | 1280x960 DS FULL
 | 28 | 1280x1024 S WIN
 | 29 | 1280x1024 DS WIN
 | 30 | 1280x1024 S FULL
 | 31 | 1280x1024 DR FULL
 | 32 | 1280x1024 DS FULL
 | 33 | 1600x1200 S WIN
 | 34 | 1600x1200 DS WIN
 | 35 | 1600x1200 DR FULL
 | 36 | 1600x1200 DS FULL
 | 37 | CUSTOM D WIN
 | 38 | CUSTOM DS FULL
 | 39 | CUSTOM WIN
 | 40 | CUSTOM S FULL
 | 41 | CUSTOM DR FULL
-w |  | Enable VSync (disables triple buffering)

SDL-only Switches

Argument | Sub-Argument | Description
-js # | [0...32767] | Set joystick sensitivity
-v # |  | Select Video Mode:
 | 0 | 256x224 R WIN
 | 1 | 256x224 R FULL
 | 2 | 512x448 DR WIN
 | 3 | 512x448 DR FULL
 | 4 | 640x480 DR FULL
 | 5 | 256x224 OR WIN
 | 6 | 512x448 ODR WIN
 | 7 | 640x480 ODS FULL
 | 8 | 640x480 ODS WIN
 | 9 | 640x560 ODR WIN
 | 10 | 768x672 ODR WIN
 | 11 | 800x600 ODS FULL
 | 12 | 800x600 ODS WIN
 | 13 | 896x784 ODR WIN
 | 14 | 1024x768 ODS FULL
 | 15 | 1024x768 ODS WIN
 | 16 | 1024x896 ODR WIN
 | 17 | 1280x960 ODS FULL
 | 18 | 1280x1024 ODS FULL
 | 19 | 1600x1200 ODS FULL
 | 20 | VARIABLE ODR WIN
 | 21 | VARIABLE ODS WIN
 | 22 | CUSTOM OD FULL

DOS-only Switches

Argument | Sub-Argument | Description
-0 |  | Force black background in 8-bit modes
-1 #/-2 # |  | Select Player 1/2 Input:
 | 2 | 2 Button
 | 3 | 4 Button
 | 4 | 6 Button
 | 5 | 8 Button
 | 6 | Sidewinder #1
 | 7 | Sidewinder #2
 | 8 | Sidewinder #3
 | 9 | Sidewinder #4
 | 10 | Gamepad Pro #0
 | 11 | Gamepad Pro #1
 | 12 | LPT1 #1
 | 13 | LPT1 #2
 | 14 | LPT1 #3
 | 15 | LPT1 #4
 | 16 | LPT1 #5
-3 |  | Enable triple buffering (disables VSync)
-8 |  | Force 8-bit sound
-c |  | Enable full/wide screen (when available)
-cc |  | Enable small screen (when available)
-sp |  | Report sound detection information
-v # |  | Select Video Mode:
 | 0 | 256x224x8B (MODEQ)
 | 1 | 256x240x8B (MODEQ)
 | 2 | 256x256x8B (MODEQ)
 | 3 | 320x224x8B (MODEX)
 | 4 | 320x240x8B (MODEX)
 | 5 | 320x256x8B (MODEX)
 | 6 | 640x480x16B (VESA1)*
 | 7 | 320x240x8B (VESA2)
 | 8 | 320x240x16B (VESA2)
 | 9 | 320x480x8B (VESA2)
 | 10 | 320x480x16B (VESA2)
 | 11 | 512x384x8B (VESA2)
 | 12 | 512x384x16B (VESA2)
 | 13 | 640x400x8B (VESA2)
 | 14 | 640x400x16B (VESA2)
 | 15 | 640x480x8B (VESA2)
 | 16 | 640x480x16B (VESA2)
 | 17 | 800x600x8B (VESA2)
 | 18 | 800x600x16B (VESA2)
-w |  | Enable VSync (disables triple buffering)

*The 640x480x16B (VESA1) video mode is compatible with many video cards, but can also be very slow. We recommend that you use a VESA2 mode if your video card supports it. Please see the system requirements for more information.

Footer


Games - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
  • Games
    • ROMs
    • Compatibility
    • Special-Chip Games
    • Special Cartridges
    • BS-X (Satellaview)
    • Super Gameboy
    • Individual Game Issues
    • Games Supported by ManyMouse
    • Multiplayer List
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

Games

ROMs

ROMs are not included with ZSNES!!! You must find them on your own.

Please read Wikipedia's article on ROM Images for a general overview.

In relation to SNES emulation, a "ROM image" is a computer file which is an exact copy of the data that is contained in a Read Only Memory chip inside a game cartridge. This file contains the same data that a real SNES console reads from the game cartridge. An SNES emulator loads this ROM into its own memory, very much like how a real SNES operates.

A problem appears when you have a ROM image that is not an exact copy of the data on a real SNES cartridge. Many of the ROMs available for download on the Internet are not in fact exact copies of real SNES games. There are a variety of reasons why a ROM that appears to be a real game is not an exact copy of the cartridge data. For example, the ROM may have been incorrectly "dumped" from the cartridge, which can introduce errors. Certain prolific ROM "releasers" will "hack" a ROM to include an introduction that advertises the releaser. Regardless of the reason for an imperfect ROM image, these "bad" ROMs can display errors when they are played in an emulator.

Emulator developers generally try to make their emulators work with "good" ROMs; that is, ROMs that are perfect copies of the data on a real game cartridge. The developers of ZSNES in particular are unable to provide any help to people who are using "bad" ROMs. You must use a good ROM if you want any chance of playing an error-free game.

We recommend using NSRT to verify that your ROMs are "good" dumps. In some cases, NSRT can actually modify a "bad" ROM in such a way that it becomes a "good" ROM. Please read the documentation included with NSRT for additional information.

Compatibility

There are many reasons why a particular ROM may not work correctly with ZSNES. Here is a list of things you can do to improve your chances of a ROM working with ZSNES:

  • Make sure your ROM is actually a "good dump." Often a ROM appears to be from a particular game/cartridge, but it is not in fact a perfect copy of the data on that cartridge. You can use NSRT to scan your ROM and tell you if it is a good dump. In some cases, NSRT can actually modify a "bad" ROM in such a way that it becomes a "good" ROM.
  • Your ROM may be a game that uses the SuperFX special chip. It may also be "interleaved." ZSNES cannot detect when a ROM is interleaved with the SuperFX interleave method. There is more information about this below. In cases where ZSNES cannot detect a ROM's interleave method, ZSNES will incorrectly report the ROM as not interleaved, and the ROM will fail to load.
  • If you have turned off sound, you should re-enable it. If you wish to mute the sound output, simply move the volume slider to 0%. Many games require sound emulation to be active in order to work correctly, so disabling sound can "break" a lot of games.
  • If you have changed the percentage of execution in the ZSNES configuration file, change it back to 100. However, there are a few particular games that may work better if the percentage to execute is set to either 120% or 80%.

The developers of ZSNES make no guarantee that any particular game will work. While we wish to play these incompatible games as much as you do, sometimes it is just not possible. Furthermore, ZSNES is in a constant state of development. Compatibility with a particular game may change between releases of ZSNES.

In the past, ZSNES developers programmed the emulator to "hack" certain games. These "hacks" would modify in-memory certain incompatible games, to get them to work with ZSNES. Some hacks were also used make certain games run at full speed if they were too slow. Sometimes, however, a particular game hack will break other parts of accurate SNES emulation.

As the emulation accuracy of ZSNES has improved, these hacks have become less necessary. In general, game hacks are removed whenever possible. With the current state of emulation in ZSNES, no new game hacks will be added.

In conclusion, if you have tried the steps above, and your game still doesn't work, we're sorry; however there is nothing we can do. ZSNES is developed for emulation accuracy, with game compatibility as a side effect, not the other way around. The most you can do is try another emulator or hope that ZSNES will become accurate enough to be able to run your particular game.

Special-Chip Games

The approximate percentage of emulation progress for these special chips is listed under Current Progress.

The NSRT SNES Add-on Chip information article was frequently referenced for the information assembled on this page.

You may find that the section on Enhancement chips in the Super Nintendo article at Wikipedia contains some interesting historical information, not covered in this FAQ.

A number of games developed for the Super Nintendo included additional special-purpose processors on the game cartridge. A game would use this special processor to accomplish something that wasn't possible using just the standard SNES hardware. It is impossible to represent these processors with ROM data; in order for these games to work, ZSNES must emulate these special processors, in addition to all the standard SNES hardware (which ZSNES already emulates).

Below is a list of all known special processors, followed by a list of the games known to use each processor.

C4

The C4 chip is a math co-processor with limited graphical processing capabilities.

  • Megaman X 2 (USA) / Rockman X 2 (Japan)
  • Megaman X 3 (USA, Europe) / Rockman X 3 (Japan)

Nintendo DSP

Each of the Nintendo DSP chips have identical hardware, but different software (firmware).

DSP-1
  • Ace wo Nerae!
  • Armored Trooper Votoms
  • Ballz 3D / 3 Jigen Kakutou Ballz
  • Battle Racers
  • Drift King Shutokou Battle '94
  • Drift King Shutokou Battle 2
  • Final Stretch
  • Hashiriya Kon
  • Korean League
  • Lock On
  • Michael Andretti's Indy Car Challenge
  • Pilotwings
  • Super 3D Baseball
  • Super Air Diver
  • Super Air Diver 2
  • Super Bases Loaded II
  • Super F1 Circus Gaiden
  • Super Mario Kart
  • Suzuka 8 Hours
DSP-2
  • Dungeon Master
DSP-3
  • SD Gundam GX
DSP-4
  • Top Gear 3000 (USA) / Planets Champ TG 3000 (Japan)

OBC-1

  • Metal Combat

SA-1

The SA-1 is a 65816 chip, although at a higher clock then the SNES's internal one.

  • Asahi Shinbun Rensai - Katou Ichi-Ni-San Kudan Shougi Shingiru
  • Daisenryaku Expert WWII
  • Derby Jockey 2
  • Dragon Ball Z - Hyper Dimension
  • Hanyuu Meijin no Omoshiro Shougi
  • Harukanaru Augusta 3 - Masters New
  • Hayashi Kaihou Kudan no Igo Taidou
  • Itoi Shigesato no Bass Tsuri No.1
  • J. League '96 Dream Stadium
  • Jikkyou Oshaberi Parodius
  • Jumpin' Derby
  • Kakinoki Shougi
  • Kirby Super Star (USA) / Hoshi no Kirby - Super Deluxe (Japan) / Kirby's Fun Pak (Europe)
  • Kirby's Dream Land 3 (USA) / Hoshi no Kirby 3 (Japan)
  • Marvelous
  • Mini Yonku Shining Scorpion - Let's & Go!!
  • Pebble Beach no Hatou New - Tournament Edition
  • PGA European Tour
  • PGA Tour 96
  • Power Rangers Zeo - Battle Racers
  • Saikousoku Shikou Shougi Mahjong
  • SD F-1 Grand Prix
  • SD Gundam G-NEXT cartridge ROM (G-NEXT.SFC)
  • Shin Shougi Club
  • Shougi no Hanamichi
  • Shougi Saikyou
  • Shougi Saikyou II
  • Super Bomberman - Panic Bomber W
  • Super Mario RPG
  • Super Robot Wars Gaiden
  • Super Shougi 3 - Kitaihei
  • Taikyoku Igo - Idaten
  • Takemiya Masaki Kudan no Igo Daishou

S-DD1

  • Star Ocean
  • Street Fighter Alpha 2 (USA/Europe) / Street Fighter Zero 2 (Japan)

Seta DSP

Seta's DSP has 2 major firmwares.

Seta 10 / ST010
  • F1 ROC II (USA) / Exhaust Heat II (Japan)
Seta 11 / ST011
  • Hayazashi Nidan Morita Shougi

Seta RISC

The Seta RISC chip is not emulated.

Seta 18 / ST018
  • Hayazashi Nidan Morita Shougi 2

SPC7110

  • Far East of Eden Zero
  • Far East of Eden Zero - Shounen Jump no Shou
  • Momotarou Dentetsu Happy
  • Super Power League 4

ZSNES does not fully support the SPC7110 chip yet. However, you may use some third party graphics decompression packs to get the four above games to work.

The SPC7110 graphic packs are mirrored on a number of sites on the Internet. Here are a few:

  • * ipher's WIP Pages
  • * NSRT Official Site
  • * Caitsith2's Personal Web Page

After you have downloaded all of the parts, extract them all into a new directory on your disk. Then go to the Config-->Paths menu in the GUI and enter in the location of the folder in the appropriate field.

S-RTC

  • Daikaijuu Monogatari II

SuperFX

  • Dirt Racer
  • Dirt Trax FX
  • Doom
  • Star Fox (USA / Japan) / Starwing (Europe)
  • Stunt Race FX (USA / Europe) / Wild Trax (Japan)
  • Super Mario World 2: Yoshi's Island
  • Vortex
  • Winter Gold

ZSNES does not support interleaved SuperFX ROMs! An interleaved ROM is one in which the data is arranged differently than in the original, real SNES cartridge. While ZSNES has the ability to read the most common types of interleaved ROMs, it cannot read interleaved SuperFX ROMs, or even determine that they are interleaved.

You can use NSRT to deinterleave your SuperFX ROMs, or if you prefer, all your ROMs. Consequently, the creator of NSRT (Nach) has also written a document about the technical details of interleaved SNES ROMs, if you are interested.

Special Cartridges

The approximate percentage of emulation progress for these special cartridges is listed under Current Progress.

Same Game; SD Gundam G-Next

These were special games released only in Japan. They could be played by themselves, standing alone, but they could also be played with special additional cartridges, which plugged into the top of the main cartridge. These extra cartridges used the same form-factor as the BS-X memory cartridges, and they would improve or change the main game in some small way (similar to the Sonic and Knuckles cartridge for Sega Genesis).

You can play the original cartridges by themselves by loading them like any normal ROM. In order to play these games as if they had an expansion cartridge plugged in, you must first configure the paths to the base cartridge ROMs under Config -> Paths. After defining the path to the base ROMs, you can now load the expansion ROM like any normal ROM. ZSNES will virtually "plug in" the expansion ROM to the base ROM, and load both of them at the same time.

The NSRT file names for these ROMs are SAMEGAME.SFC and G-NEXT.SFC, respectively.

Sufami Turbo

Gamers Graveyard has some pictures and information on the Sufami Turbo.

The Sufami Turbo is a special add-on, manufactured by Bandai, and released only in Japan. The games were sold on small, GameBoy-sized mini-cartridges, two of which could simultaneously be plugged into the Sufami Turbo main cartridge. Certain combinations of games could interact with each other.

To emulate the Sufami Turbo, you will first need the Sufami Turbo BIOS. You must configure the path to this BIOS under Config -> Paths.

The NSRT file name for the Sufami Turbo BIOS is STBIOS.BIN.

If you use NSRT, your Sufami Turbo ROMs will have .st extensions. In order to load two ROMs at once (to emulate two simultaneously loaded cartridges), you must use the command line. As an example, you would type in zsnesw.exe "C:\Path\To\ROMs\sufami turbo rom 1.st" "C:\Path\To\ROMs\sufami turbo rom 2.st". Note that you must type the FULL path to both ROM images. The example is specific to the Windows command line and ZSNES port, but you get the idea.

You may occasionally come across a Sufami Turbo ROM that is hacked to include the BIOS with it. Use NSRT with the -split command to separate the BIOS from the ROM. This will give you at least two separate files: one will be the game, and the other will be the BIOS. You may even get 3 files: Two games and one BIOS. After you have separated the BIOS and the game(s), simply follow the directions stated above.

Broadcast Satellaview (BS-X)

Please read the Satellaview article on Wikipedia for additional information.

This add-on was released only in Japan. It allowed gamers to connect to a satellite feed at certain times of the day, which would transmit games to the Super Famicom. Downloaded games were optionally stored on a small, eight-megabit mini-cartridge, which plugged into the top of the BS-X main cartridge (which in turn plugged directly into the Super Famicom). Many games, some of which had time limits, were made exclusively for the BS Satellaview.

Currently, ZSNES can partially emulate the BS-X; some games will have graphics glitches, some games can be coaxed into running by changing certain settings, but some games won't run at all.

Also note that there is a BIOS for the BS-X. You may configure the path to the BS-X BIOS under Config -> Paths; however, it's not currently required to run BS games. It may be required in the future.

The NSRT file name for the BS-X BIOS is BS Satellaview BS-X (BIOS) (J).sfc.

Super GameBoy

The Super GameBoy is not emulated. There are currently no plans to support it. This is because the Super GameBoy cartridge contains a complete set of GameBoy hardware (without screen and speakers, of course). Thus, to fully support the Super GameBoy, ZSNES would have to emulate both the SNES and a GameBoy. In addition, there are some very complex interactions between the Super GameBoy and SNES hardware that are not yet fully understood.

"But wait," you say, "I have a Super GameBoy BIOS! Won't this allow ZSNES to emulate a Super GameBoy?"

The answer is "no." The BIOS you have is only the software for the Super GameBoy, not the hardware, and thus is no help in emulating the Super GameBoy hardware. In the meantime, there are some GameBoy emulators, such as KiGB, BGB, and VisualBoyAdvance, that faithfully support some of the more useful features of the Super GameBoy.

Individual Game Issues

Chrono Trigger

How do you get past the part in Chrono Trigger where you have to press the L, R, and A buttons?

Assign two or all three of these SNES controller buttons to the same keyboard key. You can do this under Config Menu -> Input. Please read this note about keyboard limitations.

Star Ocean

This game is difficult to emulate correctly, and there are also bugs within the game itself. The battles in the game are emulated at an incorrect speed, and the game will often freeze or crash randomly. You may encounter more issues. You can find detailed information about the bugs in this game at RPGClassics.

For best results, we recommend that you use an emulator that runs the game more accurately, such as Snes9x.

Games Supported by ManyMouse

ZSNES supports Ryan C. Gordon's ManyMouse library, which allows you to take advantage of games that support usage of two SNES add-on devices at once. You will need two mice plugged into your computer.

Here is a list of known games that support two SNES add-on devices simultaneously:

  • Arkanoid - Doh It Again
  • Bishoujo Senshi Sailor Moon S - Kondo ha Puzzle de Oshiokiyo!
  • Fun 'N Games
  • Koutetsu no Kishi (and its two sequels)
  • Lamborghini - American Challenge
  • Lord Monarch
  • Motoko-chan no Wonder Kitchen
  • Operation Thunderbolt
  • Revolution X
  • Shien's Revenge
  • Super Castles
  • T2 - The Arcade Game
  • Tin Star
  • Tokimeki Memorial

Linux users should remember to type chmod a+r /dev/input/* at the shell after both mice are plugged in.

This feature is not implemented in the DOS port.

ManyMouse currently does not support BSD either, so Windows, Linux, or Mac OS X is required.

List of Multiplayer Games

Please note that this list does not include any sports games (since they are easy to recognize and most of them are multiplayer). It also does not include games with only 2 player alternating modes nor games that require the SNES Mouse/Super Scope. Also, this list does not generally have sequels or other derivatives listed; if the original is listed here, it's likely its sequels and derivatives support multiplayer, too.

This list is not necessarily complete.

  • Aero Fighters
  • Art of Fighting
  • Battletoads in Battlemaniacs
  • Battletoads vs DoubleDragon
  • Brawl Brothers
  • Brutal: Paws of Fury
  • Captain Commando
  • Clay Fighter
  • Contra 3
  • Darius Twin
  • Double Dragon 5
  • Dragonball Z Super Butoden
  • Dragonball Z Hyper Dimension
  • Faceball
  • Fatal Fury
  • Fighter's History
  • Final Fight 2 & 3
  • Ghoul Patrol
  • Goemon
  • Goof Troop
  • Gundam Wing: Endless Duel
  • Joe & Mac
  • Jurassic Park 2 - The Chaos Continues
  • Killer Instinct
  • King of Dragons
  • King of the Monsters
  • Kirby's Avalanche
  • Kirby's Dreamland 3
  • Kirby Super Star
  • Legend of the Mystical Ninja
  • Lemmings
  • Megaman 7 (Secret Code - password 1415/5585/7823/6251 and press L+R+Start)
  • Metal Warriors
  • Mortal Kombat
  • Ms. Pac-Man
  • NP Mario Picross Series
  • Peace Keapers
  • Pirates of the Dark Water
  • Pocky & Rocky
  • Pop'n Twinbee
  • Power Instinct
  • Primal Rage
  • Puzzle Bobble
  • Raiden
  • Rampart
  • Ranma 1/2
  • Rise of the Robots
  • Rival Turf
  • Rock N' Roll Racing
  • Run Saber
  • Sailor Moon
  • Samurai Shodown
  • Secret of Mana
  • Seiken Densetsu 3
  • Shaq Fu
  • Star Fox 2
  • Star Trek Starfleet Academy
  • Street Fighter 2
  • Street Fighter 2 Turbo
  • Street Fighter Alpha 2
  • Street Racer
  • Stunt Race FX
  • Sunset Riders
  • Super Bomberman
  • Super Mario All-Stars (SMB3 minigame)
  • Super Mario Kart
  • Super Mario World 2: Yoshi's Island (At map, press X,X,Y,B,A)
  • Super Offroad
  • Super Smash TV
  • Super Street Fighter 2
  • Suzuka 8 Hours
  • Teenage Mutant Ninja Turtles 4 - Turtles in Time
  • Teenage Mutant Ninja Turtles 5 - Tournament Fighters
  • Tetris
  • The Great Circus Mystery
  • Top Gear 2
  • Top Gear 3000
  • Tuff E Nuff
  • Ultimate Mortal Kombat 3
  • Uniracers
  • Wild Guns
  • World Heroes
  • Wrecking Crew '98
  • Zombies Ate My Neighbors

Footer


Frequently Asked Questions - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
    • Universal
    • Win Port
    • SDL Port
    • DOS Port
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

FAQ

The FAQ page was first included in version 0.390 of ZSNES, released on April 11, 1998.

Question Index

UNIVERSAL QUESTIONS

  • General
    • Where do I download games / ROMs?
    • What is the "save directory"?
    • Why are my games not saving?
    • Are the ZSNES data files compatible among the various ZSNES ports (Win/DOS/SDL)?
    • Is there Toaster Support?
  • Games
    • Why don't my games work after applying IPS patches to them?
    • Does ZSNES support Snes9x, GoodSNES, and NSRT ROMs? Or only ZSNES ones?
  • Video
    • Why do my scanlines look awful?
    • Why am I missing some video filter options?
  • Sound
    • Why does ZSNES produce a lot of static?
    • Why am I missing some sound options?
  • Input
    • Why can't I press more than 2 keys at a time?
    • Why is one direction of the d-pad always held down, even when I'm not pressing any keys?
    • How do I use both my keyboard and joystick for the 1st or 2nd player?
    • Why can't I set the keys/buttons for Player 2?
    • Why won't ZSNES accept input when I'm configuring the keys for my gamepad?
    • This game tells me that it is not compatible with the MultiTap (or an external device attached). What should I do?
  • Speed
    • Why is ZSNES slow?
    • Why does the game slow down even though I'm using auto frame rate and the FPS is pretty high?
    • My games are running too quickly! How do I slow them down?
  • Miscellaneous
    • Does ZSNES support loading ROMs which are compressed?
    • Why doesn't ZSNES support the 7z, RAR, or ZIP deflate64 compression formats?
    • Does ZSNES support multiple ROMs in a single ZIP or JMA file?
    • Can you make a Mac/PocketPC/PS2/whatever port?

WIN-SPECIFIC QUESTIONS

  • General
    • Why does ZSNESw crash and give me an error with dinput.dll?
    • I just switched from the DOS port to the Windows port of ZSNES; why don't my savestates work? Are they incompatible?
  • Video
    • Why am I seeing double, with strange colors?
    • Why is the video choppy with an FPS of 60 and VSync on?
  • Sound
    • How come I don't get any sound?

SDL-SPECIFIC QUESTIONS

  • General
    • Can I run ZSNES without X?
    • I got ZSNES from my distro and I found a bug. To whom should I report it?
    • Should I use SVN?
    • I'm getting an error about gzdirect() missing when I try to compile ZSNES. What's up?

DOS-SPECIFIC QUESTIONS

  • Video
    • How do you enable transparencies?
    • Why is there a layer of fog blocking my view?
    • Why am I getting error messages regarding VESA 2 drivers?
  • Sound
    • Why is there no sound?
    • Are there any plans to improve detection for non-SoundBlaster cards (or supporting non-SB cards)?
    • I get a sound initialization error using my SB Live! (or any other PCI card). How do I fix it?
  • Input
    • Why doesn't my Sidewinder pad work?
    • How do I get my daisy-chained Sidewinder to work?
    • Why doesn't my Gamepad Pro work?
    • Why doesn't my joystick work anymore?
    • Why does JB5/JB6 keep getting pressed whenever I try to change a key?
  • Freezing/Crashing Issues
    • Why does ZSNES freeze when I run it under pure DOS?
    • Why does ZSNES crash when I load a ROM?
    • Why does ZSNES freeze when I try to enter the GUI?
    • ZSNES gives me an "out of memory" error and I only have 16MB of RAM. How do I fix this?
  • Miscellaneous
    • I'm using DJGPP 2.03 and I get an error about missing stdint.h. What's wrong?

UNIVERSAL QUESTIONS

General

Q: Where do I download games / ROMs?
A: Due to the questionable legality of ROM images of commercial games, the ZSNES Team cannot and will not provide you with any games / ROMs. We must do this in order to keep ZSNES, as an emulator, legal. Please see the disclaimer.
Q: What is the "save directory"?
A: Please read more about the types of files ZSNES generates and where they are created here.

By default, in the Win and DOS ports of ZSNES, these files will go into their corresponding ROM directory (e.g. If your Chrono Trigger ROM is in C:\SNES Games\RPG, its files will go into that folder; if your Harvest Moon ROM is in C:\SNES Games\Simulation, its files will go into that folder). In the SDL port of ZSNES, however, saves will go into ~/.zsnes by default. ZSNES SDL under Mac OS X will place them in ~/Library/Application Support/ZSNES instead.

If you dislike the default settings, you can configure a single, universal save path by either going to the Config -> Paths menu in the GUI or by editing the ZSNES configuration file.

Q: Why are my games not saving?
A: If your ROM images are stored on a CD-ROM, you need to define a save directory that points to your hard drive. In order to do this, either go to Config-->Paths and enter a directory, or edit the ZSNES configuration file by typing in a directory after "SaveDirectory=". Make sure that this directory is not marked read-only.

If this still does not solve your problem, enable SRAM Check + Save under the Config-->Saves menu.

Q: Are the ZSNES data files compatible among the various ZSNES ports (Win/DOS/SDL)?
A: Yes. Unlike certain PC applications and games, ZSNES's various save files and formats are completely port-independent; you can share any of your files with any user using any port of ZSNES (although some things may be version-dependent). Note, however, that ZSNES's configuration file contains port-specific options which don't exist in other ports, so while they can be transfered between ports, some things won't work as expected. Note that when transfering various files, make sure they're named properly and in the proper location.
Q: Is there Toaster Support?
A: While we'd love for ZSNES to lace our shoes, feed us, breathe for us, and amass wealth for us, we can't add every crazy feature that comes up. Even though ZSNES does have many, many features that are not necessarily SNES related, they normally don't go beyond features that you'd expect from an advanced gaming system.

Regarding toaster support itself, rumor has it ZSNES does bread toasting if you happen to be using it after midnight while paying your respects to the master of all controls and considering monetary options.

Games

Q: Why don't my games work after applying IPS patches to them?
A: If your patched game crashes early or just displays a black screen, you probably need to either add or remove the 512 byte offset from the patch. Use the program IPSEDIT to do this, which is bundled along with NSRT.

Alternatively, you could either add or remove a header from your ROM before patching. Again, NSRT is capable of doing this.

Q: Does ZSNES support Snes9x, GoodSNES, and NSRT ROMs? Or only ZSNES ones?
A: ZSNES, Snes9x, GoodSNES, and NSRT ROMs do not exist. All these programs work with SNES ROMs. As ZSNES is an SNES emulator, it will work with all SNES ROMs (except where ZSNES has a bug or the ROM is in an unsupported interleave format).

Video

Q: Why do my scanlines look awful?
A: Scanlines can be negatively affected by the method of vertical scaling that your video card uses, depending on the video mode you have selected for ZSNES. This can sometimes result in scanlines that are not of uniform darkness. The effect of this video scaling is most noticeable with Full scanlines, with 50% and 25% scanlines being less noticeable. To display the scanlines effect properly, you should use resolutions based on a multiple of 256x224 in windowed modes (e.g. 512x448) and 320x240 for fullscreen modes (e.g. 640x480).
Q: Why am I missing some video filter options?
A: Please make sure you have MMX Support enabled in the Options dialog. Refer to the Video Config description in GUI.htm to see what video options require MMX support.

Sound

Q: Why does ZSNES produce a lot of static?
A: There could be many reasons why you are hearing static. If you are using the Windows port and you have an ISA sound card, this could be your problem. If you are using the DOS port, and you have a PCI sound card, this could also be your problem. If your sound card is using SoundBlaster emulation, you probably need to use 8-bit sound, but this can make sound output worse. You can also try doing the following things to improve your sound: Reduce your sampling rate or disable lowpass filtering and stereo sound; Win port users can also enable the Primary Sound Buffer.
Q: Why am I missing some sound options?
A: Please make sure you have MMX Support enabled in the Options dialog. Refer to the Sound Config description in GUI.htm to see what sound options require MMX support.

Input

Q: Why can't I press more than two keys at a time?
A: Many PC keyboards limit the number of key signals that can be transmitted simultaneously. For example, certain combinations of three or more alphanumeric keys may not work. Conversely, there may be some combinations of three or more keys that do work. You would just have to test by trial-and-error to find out, since these combinations can vary between keyboards. Joysticks and gamepads generally don't have this limitation.

If you must use a keyboard, you can set multiple game keys to a single keyboard key. Alternatively, you could set some keys to the right and left Ctrl and Shift keys, since most keyboards do not restrict signals from these keys.

Q: Why is one direction of the d-pad always held down, even when I'm not pressing any keys?
A: ZSNES auto-calibrates any connected gamepads/joysticks when it first starts. Thus, if one of the buttons or directions is accidentally held down while ZSNES is starting, ZSNES will think this is "normal" or "zero" input, even when you let go of the button. To fix the problem, simply close ZSNES, make sure no buttons are pressed and all axis are centered on your gamepad/joystick, and restart ZSNES. It will then auto-calibrate to the correct "zero" settings.
Q: How do I use both my keyboard and joystick for the 1st or 2nd player?
A: First, configure the Player 1 pad (Config-->Input--> #1) for your normal set-up (for example, a keyboard). Next, configure the Player 3 pad (Config-->Input--> #3) to use your alternative set-up (for example, a joystick or gamepad). When you want to switch between your regular and alternative set-up, go to the Config-->Options menu and check Use Pl3/4 as Pl1/2. Now the Player 3 controls act as the Player 1 pad, and Player 4's controls act as the Player 2 pad. To return to the normal controls, simply uncheck this option. Follow the same procedure to create a similar set-up for Players 2 and 4. Note: Enabling the option Use Pl3/4 as Pl1/2 disables MultiTap emulation.
Q: Why can't I set the keys/buttons for Player 2?
A: You need to set the Current Device before ZSNES will allow you to set the individual keys for Player 2 (or Players 3, 4, or 5). If NONE is shown after CURRENT:, the input cannot be changed (or used, for that matter). See the Input section of the GUI page for further instructions.
Q: Why won't ZSNES accept input when I'm configuring the keys for my gamepad?
A: Exit ZSNES and calibrate your input device. Then restart ZSNES and see if it works.
Q: This game tells me that it is not compatible with the MultiTap (or an external device attached). What should I do?
A: Set the input devices of player 3, 4, and 5 to "None". You may also need to go to the Config-->Options and check Use Pl3/4 as Pl1/2. Additionally, you could add an NSRT header to your ROM if you desire.

Speed

Q: Why is ZSNES slow?
A: First and foremost, does your computer meet the minimum system requirements to run ZSNES? If not, there is little you can do to improve performance. That being said, you can still try a number of things.
  • Make sure that any major program(s) is/are closed (such as Winamp).
  • Try the default settings of ZSNES before you do anything else. You can reset ZSNES to the default settings by deleting all three of its configuration files.
  • Ensure that MMX Support is enabled in the Options dialog; this mode should provide a noticeable speed increase for computers that can use it.
  • Certain system configurations and video cards work better with certain video modes. Try switching between different video modes until you find one that has good/better performance. Things to remember when doing this are that lower resolutions are faster than higher resolutions, full screen modes are faster than windowed modes, and 'R' modes are faster than 'S' modes (because no scaling is necessary).
  • Make sure you are using Auto Frame Skipping. If you already are, try increasing the Max Frame Skip.
  • Do not use VSync; if you must use VSync, try also enabling Triple Buffering.
  • Disable all video filters.
  • Compile ZSNES yourself with optimizations for your CPU's architecture.
  • If you still need more speed, disable sound. If that's not enough, disable SPC emulation (you must restart ZSNES for this option to take effect). Some games will not work without SPC emulation.

If you have an old computer, such as one with a 486/100 processor, you will probably be better off using older DOS versions of ZSNES, as the minimum system requirements have increased slightly with subsequent releases. To achieve greater speed, you may want to avoid using VESA video modes (although this will disable transparencies). Experiment with the different video modes and try the recommendations above to see which configuration provides the best speed for you.

Q: Why does the game slow down even though I'm using auto frame rate and the FPS is pretty high?
A: If you have ever played a real SNES, you may notice that some games slow down even on it. To the extent that ZSNES accurately emulates an SNES, a game will slow down in ZSNES in the same places it would slown down on a real SNES.
Q: My games are running too quickly! How do I slow them down?
A: You may have disabled auto frame skipping. Re-enable it in the Config-->Speed menu.

If you don't want to use auto frame skipping, and you want to play in windowed mode, you might want to set your monitor's refresh rate to 60hz and enable VSync in ZSNES.

If you want to use fullscreen mode without using auto frame skipping, you can enable the KitchenSync by using either the -ks (for NTSC/PAL) or -kp (for PAL) command-line parameter (Windows port only). Also be sure to enable triple buffering.

Miscellaneous

Q: Does ZSNES support loading ROMs which are compressed?
A: Yes, but it depends on what compression format is used. ZSNES can currently load ROMs that are compressed in the ZIP (method 0 - store and method 8 - deflate), GZip, and JMA compression formats.

Many tools are available to create ZIP files. If you want a fast, commandline based ZIP program that is available on many platforms, get Info-ZIP. Info-ZIP also has a Windows front end called WiZ available if you prefer a GUI.

For creating GZip files, there are not too many choices. A fast, commandline based compressor for the GZip format, available for several platforms, may be downloaded at the GZip site. If you use Windows, there is a program with a GUI called 7-Zip that has support for ZIP, GZip, and others. ZIP and GZip files created by 7-Zip are smaller than those created with other programs, but 7-Zip takes a longer time creating them. For users of Unix based operating systems who would like a GUI front end for both ZIP and GZip, get Ark, which is part of the KDE project.

To create JMA files, a format invented by Nach and the rest of the NSRT team which offers the best compression ratio for SNES ROMs, you must use NSRT. NSRT is also capable of compressing SNES ROMs into ZIP and GZip formats.

Q: Why doesn't ZSNES support the 7z, RAR, or ZIP deflate64 compression formats?
A: ZSNES only supports formats which have an open-source, portable, and easy-to-use library. The 7z and RAR formats do not yet have libraries that fill those criteria. If you want the best compression ratio for your SNES ROMs, you should use JMA. Currently, the only publicly available program that can compress and decompress with JMA is NSRT. ZIP deflate64 lacks a decompression library which ZSNES can use, but rumor has it that Nach is working on one.
Q: Does ZSNES support multiple ROMs in a single ZIP or JMA file?
A: ZSNES currently does not support more than one ROM in a ZIP or JMA file, although such support will probably be implemented in the future.
Q: Can you make a Mac/PocketPC/PS2/PSP/whatever port?
A: Since ZSNES is written in assembly, ports to any systems that are not 100% x86 compatible are impossible. Try Snes9x for portability.

Apple Computer, Inc. recently switched their the Macintosh computers to use Intel processors, and as such ZSNES has already been modified to run on said computers. Just compile the SDL port with an up-to-date NASM and zlib and everything normally required.

Another third party developer recently ported ZSNES to the Microsoft Xbox as well, and released it under the name "ZsneXbox". Unfortunately, we can not provide a download link as this port is being illegally distributed as a compiled XBE file. As a result, any link or support requests regarding this port will be promptly ignored.

WIN-SPECIFIC QUESTIONS

General

Q: Why does ZSNESw crash and give me an error with dinput.dll?
A: If you get this error, download and install the latest version of DirectX.

You might also try running the DirectX Diagnostic Tool. You can do this by clicking the Start button, then selecting "Run...". Type "dxdiag" after "Open:", and click "OK". There are lots of options you can play with, so please read everything before you start messing around. Specifically, go to the "Display" tab, and under the "DirectX Features" section, click the "Disable" button beside each feature. After they are all disabled, re-enable them. Exit dxdiag, and try ZSNES again.

If none of that worked, try re-installing DirectX.

Q: I just switched from the DOS port to the Windows port of ZSNES; why don't my savestates work? Are they incompatible?
A: The saves and savestates will work just as well with any port of ZSNES. You simply need to rename all files that have .srm and .zst (and .zs1, .zs2, etc.) extensions to match the filenames of your ROMs (or the jma/zip archives that contain them).

For example, if you have "Super Mario World.zip" and "Super Mario RPG.zip", both games will have saves that are labeled "SUPERM~1.SRM", "SUPERM~1.ZS2", etc., and they will be differentiated only by the number after the "~" in the filename.

If you need to find out which "~" number a game uses, open a DOS prompt (a.k.a. Command Prompt), change to the ROM directory, and enter "dir /on /p" (On some newer systems like Win2k you need to add the "/x" switch for the DOS filenames to be displayed). Unfortunately, this method may not be accurate if you have moved your ROMs to a different folder or another computer; you may need to guess and hope for the best, trying to swap filenames a few different ways between the saves before it works for all your games. If it comes down to guessing, we recommend that you backup your save files before renaming them.

Don't forget to put the files into your Save directory.

Video

Q: Why am I seeing double, with strange colors?
A: Any change of resolution within ZSNES should correct the problem. Fullscreen modes are recommended because they are faster than windowed modes.

If you still experience problems, see if these suggestions help (each should be done/tried separately):

  • The issue can be completely resolved with up-to-date video card drivers. Keeping your device drivers fully updated will provide other benefits unrelated to ZSNES.
  • Set the resolution for ZSNES to the same one used by the Windows desktop.
  • Try enabling 16-bit color depth in Windows.
Q: Why is the video choppy with an FPS of 60 and VSync on?
A: If you have VSync on, your monitor needs to be set to a refresh rate that is a multiple of the framerate of the game. NTSC games natively run at ~60 FPS. PAL games natively run at 50 FPS. Thus your monitor would need to be either 60Hz or 120Hz for NTSC games, or 50Hz/100Hz for PAL games. If you run ZSNES with the -6 switch, with a sub-argument of '60', ZSNES will try to switch your monitor to 60Hz refresh rate. You can use the -ks switch to make ZSNES try to switch your monitor to 120Hz refresh rate. These two switches only work in fullscreen modes and are for the Windows port only.

You can also try enabling Triple Buffering (using the -3 switch or the GUI option), however this currently only works in Full Screen modes. One last thing you can try is to turn off auto frame-skipping, and set manual frame rate to "0".

Sound

Q: How come I don't get any sound?
A: Either you accidentally disabled sound, you don't have a sound card, the sound drivers aren't properly installed in your system, or your sound card is not compatible with DirectSound (part of Microsoft's DirectX API). Also make sure that Disable SPC Emulation is NOT checked.

Try (re-)installing the latest version of DirectX, and make sure you have the latest drivers for your sound card (WHQL Certified, if possible).

Please also note that ISA sound cards tend not to work with Windows, while they do with DOS.

SDL-SPECIFIC QUESTIONS

General

Q: Can I run ZSNES without X?
A: Yes, but you'll need to have SDL compiled to use SVGAlib.
Q: I got ZSNES from my distro and I found a bug. To whom should I report it?
A: Compile ZSNES yourself and see if the bug still exists. If it does, please tell us, otherwise be happy that ZSNES works now, and give your distro a heads-up if you feel motivated enough.
Q: Should I use SVN?
A: SVN is the best way to get the most up-to-date ZSNES source. It is best to double-check with SVN if you have a problem, since we might have already fixed it. If you find a new problem in SVN, please tell us, but be warned that we won't take it too seriously if it involves something that's currently being worked on.

To check out and install ZSNES from SVN, refer to this thread on the ZSNES board.

Q: I'm getting an error about gzdirect() missing when I try to compile ZSNES. What's up?
A: Make sure you're using zlib 1.2.3 or higher. Some distributions say you have zlib 1.2.3 but in reality give you an older version. If your distribution is being problematic, compile zlib yourself. Grab the latest version of zlib at the official website.

DOS-SPECIFIC QUESTIONS

Video

Q: How do you enable transparencies?
A: First, try setting the video mode to a 16-bit color mode in the GUI. (If 320x240x16b doesn't work, then try 640x480x16b). If it gives you an error that says that your video card isn't compatible with VESA 2.0, you might want to get Scitech Display Doctor. It provides certain cards with VESA 2.0 support. Running with transparencies on is definitely slower because of the extra math equations, memory, and video space involved.
Q: Why is there a layer of fog blocking my view?
A: You need to either enable transparencies (see above), or you can disable certain backgrounds by pressing the 1, 2, 3, or 4 keys. If you get lost while pressing those keys, press 6 to re-enable all of the backgrounds.
Q: Why am I getting error messages regarding VESA 2 drivers?
A: Here is a list of the various error codes that you may be coming across, along with descriptions of what they mean:
  • VBE not detected - ZSNES failed to detect any VBE interrupts (Your video card doesn't support VESA).
  • VESA not detected - ZSNES failed to detect any VESA extensions (Your video card doesn't support VESA).
  • VESA 2.0 or greater required - Your video card supports VESA, but it has an older version. You may want to use Scitech Display Doctor to upgrade your VESA driver.
  • VESA 2 mode does not work on your video card/driver - Meaning that the resolution you requested does not exist in the supported resolutions of your video card. Choose a different resolution or upgrade with SDD, which can sometimes help increase the number of resolutions supported.
  • Unable to initialize video mode - A VESA 2.0 driver is found, but the video mode failed to start. There could possibly be an error on the video card setting, or it may be a defective piece of hardware.
  • Linear frame buffer not detected - Meaning that your video card does not support linear frame buffering, which is required for the ZSNES VESA 2 routines.

Sound

Q: Why is there no sound?
A: There could be several situations:
  • You haven't enabled sound. You can enable it through the GUI or through zsnes.cfg. Also make sure that Disable SPC Emulation is NOT checked.
  • You need to make sure that the SET BLASTER variable is set properly. To do this, type SET in DOS and look for a string starting with "BLASTER=". If such a string exists, then this is not your problem.
  • You don't have a SB2.0 compatible sound card. If this is your case, there is nothing you can do at the moment. ZSNES uses auto-initialization mode for sound which requires SB2.0+.
  • Your SB IRQ conflicts with another device. If this is the case, you might want to check your sound card settings through Control Panel -> System.
  • ZSNES doesn't like your sound card.
  • You can try using VDMSound.
Q: Are there any plans to improve detection for non-SoundBlaster cards (or supporting non-SB cards)?
A: There is little effort put into major changes to the DOS code, since so few people use that port these days. However, we will gladly accept anyone's help in improving the DOS sound code.
Q: I get a sound initialization error using my SB Live! (or any other PCI card). How do I fix it?
A: Here is a solution: (Thanks CyberGodz for the post on the forums!)

SB Live! uses what is known as a NMI, or Non Maskable Interrupt, to emulate SB 16 sound. Don't ask us exactly what it does (it's a type of IRQ) but that is pretty much all it is good for.

The problem is that many sound cards either lack NMI support or don't have it enabled (No NMI = No DOS support).

To try and solve this problem, do the following:

  • Check your BIOS. If there is an option for RAM parity checking, enable it; it usually turns on NMI support. If there is something that says "NMI", turn it on.
  • If you don't find anything in your BIOS, then go to your motherboard's website and download the latest BIOS flash. Install it and try your DOS sound (You may still have to enable the stuff in the BIOS afterwards).
  • Failing the first two things, you could either get a new motherboard or get another compatible sound card alongside the SB Live!. Just attach a cable from the line out of the SB 16 to the line in of the SB Live!. Enable line in on the mixer of your SB Live! and it should route the sound through the old sound card (Don't use the SPDIF to connect the cards if you have one; wave sound doesn't pass through SPDIF--only MIDI).

Input

Q: Why doesn't my Sidewinder pad work?
A: First, for non-USB Sidewinders, you should disable the Sidewinder profiler from the Win9x icon tray, run ZSNES, set Input #1 as SidewinderPad1, then press the mode button a few times. If that doesn't work, try the following:
  • Try checking or unchecking the Sidewinder Fix option under Config Menu -> Options and repeat the above steps.
  • Fully disable the Win9x Sidewinder drivers by going to Control Panel/Game Controllers. Then remove the Sidewinder (Thanks Scarlet-Slider for this info!).
  • Run ZSNES under pure DOS.
  • Again, try checking or unchecking the Sidewinder Fix in the options menu of the GUI and repeat the above 2 steps.
  • Make sure your Sidewinder is plugged in and is not broken.

For USB joysticks, you can either set ZSNES as a 6-button joystick or simulate keyboard keys through the Sidewinder profiler by setting Input #1 as a keyboard with those defined keys.

Q: How do I get my daisy-chained Sidewinder to work?
A: First, run ZSNES. Temporarily disconnect the second Sidewinder pad from the first one, get the first one to work, then re-connect the second Sidewinder pad.
Q: Why doesn't my Gamepad Pro work?
A: For the non-USB version, be sure to have your Gamepad Pro set on 'GrIP' mode. Then set the input device as Gamepad Pro P0. For the USB version, you can use a keyboard emulator, which should be included with the software that came with your joystick.
Q: Why doesn't my joystick work anymore?
A: You might have accidentally clicked the Use Joystick Port 209H check box. Just uncheck it.
Q: Why does JB5/JB6 keep getting pressed whenever I try to change a key?
A: Try changing your joystick type from 6-button to 4-button.

Freezing/Crashing Issues

Q: Why does ZSNES freeze when I run it under pure DOS?
A: Try loading your mouse driver or run ZSNES using the -j switch. For the most compatible result, use the Microsoft Mouse driver if possible.
Q: Why does ZSNES crash when I load a ROM?
A: It could be that ZSNES doesn't recognize your sound configuration. To fix it, disable sound or try changing your sound configuration. Also see this question.
Q: Why does ZSNES freeze when I try to enter the GUI?
A: Run ZSNES using the commandline -j.
Q: ZSNES gives me an "out of memory" error and I only have 16MB of RAM. How do I fix this?
A: If you are running the DOS port of ZSNES from within Windows, try restarting the computer in DOS mode; more RAM should then presumably be available for ZSNES to use. To get it running under Win9x, first create a shortcut to the DOS prompt on the desktop (the filename 'target' can be C:\command.com). Next, right-click on the icon and go to Properties. Then, select the Memory tab and look below for Protected Mode (DPMI) settings and set a high value (like 20000). Last, double-click on that icon and load ZSNES as usual.

Miscellaneous

Q: I'm using DJGPP 2.03 and I get an error about missing stdint.h. What's wrong?
A: You're probably missing this file. Download the latest version of this file and put it in DJGPP's include directory.

Footer


History - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

History

The following is the history of ZSNES, including the changelog for every official ZSNES release, and other major events. ZSNES was first released on October 14, 1997.

Spanning the releases between version 0.715 and version 0.990, an ASM-only version was offered alongside the normal ASM+C version. Differences between sister C/A releases are marked as appropriate.

Note: All changelogs before v1.40 were copied from their original text source inside the ZSNES official release packages. We edited the old changelogs as little as possible in order to minimize the accidental loss of information. Therefore, you may find spelling mistakes and formatting differences between different versions.

  1. v1.50 - December 22, 2006
  2. v1.42 - January 19, 2005
  3. v1.41 - January 18, 2005
  4. v1.40 - December 25, 2004
  5. v1.36 - July 15, 2002
  6. v1.35 - June 23, 2002
  7. v1.337 - September 30, 2001
  8. zsKnight Leaves - July 23, 2001
  9. v1.31b - July 3, 2001
  10. v1.31 - June 27, 2001
  11. v1.30b - June 16, 2001
  12. v1.30 - June 13, 2001
  13. v1.29 - June 1, 2001
  14. v1.28b - May 28, 2001
  15. v1.28 - Unknown Release Date
  16. v1.26 - May 17, 2001
  17. v1.25 - May 15, 2001
  18. v1.20b - April 30, 2001
  19. Source Code Released - April 2, 2001
  20. v1.17b - December 27, 2000
  21. v1.17 - December 25, 2000
  22. v1.14 - November 27, 2000
  23. v1.12 - November 14, 2000
  24. v1.11 - November 12, 2000
  25. v1.10 - November 7, 2000
  26. v1.01 - September 9, 2000
  27. v1.000 - September 1, 2000 - First Windows Release
  28. v0.991 - May 24, 2000
  29. v0.990 - May 24, 2000
  30. v0.9891c/a - February 21, 2000
  31. v0.989c/a - February 12, 2000
  32. v0.988c/a - December 6, 1999
  33. v0.987c/a - November 26, 1999
  34. v0.986c/a - November 23, 1999
  35. v0.985c - November 15, 1999
  36. v0.963c/a - September 19, 1999
  37. v0.962c/a - September 18, 1999
  38. v0.960c - September 17, 1999
  39. v0.953c/a - August 4, 1999
  40. v0.952c - August 3, 1999
  41. v0.951c - August 3, 1999
  42. v0.950c - August 2, 1999
  43. v0.941c/a - July 18, 1999
  44. v0.940c/a - July 18, 1999
  45. v0.915c/a - July 7, 1999
  46. v0.910c/a - July 6, 1999
  47. v0.900c/a - July 4, 1999
  48. v0.800a - December 25, 1998
  49. v0.800c - December 24, 1998
  50. v0.715 - October 29, 1998
  51. v0.700 - October 26, 1998
  52. v0.635 - September 24, 1998
  53. v0.625 - September 18, 1998
  54. v0.605 - September 10, 1998
  55. v0.601 - September 9, 1998
  56. v0.600 - September 9, 1998
  57. v0.400 - May 19, 1998
  58. v0.393 - April 15, 1998
  59. v0.391 - April 13, 1998
  60. v0.390 - April 11, 1998
  61. v0.305 - February 12, 1998
  62. v0.300b - February 10, 1998
  63. v0.300 - February 9, 1998
  64. v0.297 - January 31, 1998
  65. v0.296 - Not Released?
  66. v0.295 - January 29, 1998
  67. v0.270 - December 25, 1997
  68. v0.201b - November 5, 1997
  69. v0.201 - November 5, 1997
  70. v0.200 - November 4, 1997
  71. v0.182 - October 23, 1997
  72. v0.180 - October 22, 1997
  73. v0.170 - October 16, 1997
  74. v0.150 - October 14, 1997 - Initial Release

v1.50 - December 22, 2006

All Ports:

For this release we spent much time rewriting, porting, improving many internal subsystems. ZSNES is a program with over 200,000 lines of source code and in this release, over 25% of that has been modified. Also around 15% of assembly has been ported to C. The upcoming list while large can't fully describe the amount of work and the amount of improvements made. Make sure to see the readme to find out how to use all the new features.

Subsystem Additions/Updates/Rewrites/Fixes/Improvements
  • Ryan C. Gordon's ManyMouse support added. [Nach, pagefault]
    This allows the systems compatible with ManyMouse (Windows XP, Linux via evdev if read permission set, Mac OS X) to handle each mouse plugged into the system separately. So now games with two mouse-using devices can be played with 2 players (or 1 player controlling both) on a single PC.
    Left Handed Mouse Support. [Nach, Deathlike, Jonas Quinn]
    So lefties can have the buttons for a particular mouse swapped if they so desire.
  • Rewrote directory handling system. [Nach, Jonas Quinn, grinvader, Deathlike]
    The old system, dubbed "ZFile", only kept track of files in a limited manner allowing for many many bugs. The new system, dubbed "ZPath", now tracks files and paths in a clean systematic manner to eliminate all file/path related bugs that have made previous versions annoying. All file handling code is now done in C and has many functions to make it easier for anyone else to jump right into this bit of development. This also allows for many new features to be written, and we wrote quite a few. A debug system has also been added, making it easy to track file issues regardless of the operation system in question.
  • ZMV Rewritten - Movie Support. [Nach, grinvader, ipher]
    Added support for subtitles while playing a ZMV. [Nach]
    Can now load movies via command line parameter. [Nach]
    Added parameter to close ZSNES when movie is closed. [Nach]
    Our movie subsystem - ZMV has been completely rewritten from the ground up. Now features such as rerecording (via states and rewind), appending, mouse recording, Super Scope recording (buggy), chapters, start types, frame count, input compression, among other things are now all supported. Note ZSNES can still load old ZMVs; however, it should be noted that ZMVs are somewhat version reliant and may desync on a version it was not recorded with. Also, most of the new features will not work when using an old ZMV.
  • Can now dump ZMVs to AVI and WAV. [Nach, Bisqwit]
    For years, users have requested being able to convert a ZMV to something else; it is now possible.
  • Added IPS multipatch support. Goes from IPS, IP0, IP1, IP2, ..., IP9. [Nach]
    So you can have IPS autopatching apply more than one to a game loaded.
    IPS files now loaded from save directory then ROM directory. [Nach]
    Making it easier for a user to auto patch.
    Fixed silly mistake with size adjustment of IPS patches. [Nach]
    So now the very rare broken IPS should work.
  • Rewind and ZST code fully merged; rewind should now work where save states do (Fixes rewinding in Super Bomberman games). [grinvader, Nach]
    Can now use 100 save states instead of 10. [Deathlike, Nach, Jonas Quinn]
    SRAM is now stored in save states and can be optionally loaded from them. [grinvader, Nach]
    Can now select how many rewind states you want. [grinvader, Nach, ipher]
    Can now select how much time is in between rewinds. [grinvader, Nach, ipher]
    Our state saving subsystem has been completely rewritten (although another rewrite is planned) to fix many bugs that used to be present. With the ZST and rewind code merged, it also means no more issues where one works but not the other. This is also now all done in C, making it easier to deal with, as well as allowing many new features as listed above.
  • Parsegen invented (thanks grinvader, gladius). [Nach]
    Binary and text config files merged into one and heavily updated. [Nach, grinvader, Deathlike]
    We invented a new programming language (PSR), and a compiler for it (parsegen), which allows one to keep track of variables in a simple manner for both developers and end users. Developers can just declare a particular variable to be tracked and forget about it, letting the system manage everything else, making it easy to add as many configuration options as one likes. For the end user, the config file is all in text, making it easy to modify any feature they like or features for advanced users not changeable from within the GUI. It also provides a level of future compatibility so users should normally not have to delete config files between versions. It also allows partial config files, so users can delete certain settings and have them restored to their defaults. All this is possible while maintaining a high level of flexibility.
  • Netplay, Modem, IPX code removed. [grinvader, Nach. ipher]
    As much as we hated to, we had to remove all computer-to-computer playing options in order to fix up the other subsystems since the code was spread throughout ZSNES. We hope to reimplement it in future versions and also provide new features.
  • Created new macros and greatly eased GUI development and cut down on size of GUI code. [ipher]
    Cleaned up GUI and reorganized it. [ipher, Nach, grinvader, Deathlike, Jonas Quinn]
    Added tab support to the GUI and made good use of it. [grinvader]
    Rewrote the load game menu, it can now handle thousands upon thousands of ROMs at a time. [Nach, grinvader]
    Added a custom font system. [ipher, Deathlike]
    Nach input boxes (video, path) now have a normal blink rate. [Nach]
    Now using our custom GUI should be easier and more straight forward. Almost everywhere you look, you should see a cleaner design, new features, and fewer bugs. See below for more specifics.
  • New unified ZSNES loader which is also less buggy. [Nach, grinvader, Deathlike, Jonas Quinn]
    Now command line options are handled in a more efficient manner, as well as making it much easier for us to add more.
  • Committed the ZSNES development toolkit. [Nach, grinvader]
    Code is now always in executable sections, fixes NX and many other issues. [Nach]
    Added utility to auto detect best -march option to compile with; SDL port uses it automatically. [Nach, grinvader]
    For various developers, we now added many utilities to make working on ZSNES much easier. Some of these utilities should be built into the assembler but aren't. These new utilities have also allowed us to easily track down several critical bugs and fix them effortlessly. We also have a utility now to aid the person compiling to get the best optimization out of their build, perhaps now allowing them to use HQ4x or other filters that weren't possible before.
  • Updated build setups. [grinvader, Nach]
    Added file dependency utility. [Nach]
    All the build setups have been updated to make it easier and more flexible for one to compile ZSNES and encounter fewer bugs along the way. File dependencies can now also be calculated automatically (most notably for SDL), so one updating ZSNES doesn't run into weird issues with only half of a fix being compiled.
  • Ported much assembly to C. [grinvader, Deathlike, Nach, Jonas Quinn, theoddone33, pagefault, byuu]
    Removed dead code. [grinvader, Nach, pagefault, Jonas Quinn, Deathlike]
    Lastly on our big rewrite, a lot of old junk went, and many complex and annoying features are now in C, meaning that if you know C, now is a good time to start helping out ZSNES development.
Special Chips
  • Fixed all remaining bugs with the SPC7110. SPL4 and MDH are working correctly, now. Special thanks to John Weidman and Dark Force for working on reverse engineering. [Jonas Quinn]
  • Super FX updates (Starfox 2 now 99% working). [pagefault]
  • OBC-1 code ported to C and integrated properly. Metal Combat doesn't have graphical problems anymore (thanks Nach). [Jonas Quinn]
  • DSP-1 finished. [The Dumper, Andreas Naive, Nach]
  • SA-1 detection updated (Fixed loading of SD F-1 Grand Prix (Sample)). [Nach]
  • Partial Seta 11 emulation (thanks anonymous and Jonas Quinn). [Nach]
  • DSP-3 support (opcodes RE'd by Overload and Feather). Thanks Jonas Quinn for finding a bug in my glue code. [Nach]
  • DSP-4 Support (Top Gear 3000). [Nach, pagefault]
  • C4 emulation should be virtually perfect now. [Nach, Jonas Quinn]
  • Now got mapping done correctly for dual Sufami Turbo (thanks byuu); now have two sets of SRAM. [Nach, Jonas Quinn]
As for everything else, much was done, including a multitude of emulation updates; it is even hard to count how many emulation bugs are no longer present. Several new features were also added.
  • Many Mode 7 fixes, also implemented anomie's Matrix formula (Fixed Energy Breakers world map, IOG intro, Battlemanicas Battlecoptor intro). [Jonas Quinn]
  • Added some preliminary NMI and IRQ timing. Proper behavior of H-IRQ when V-IRQ is active. Flickering fix in H-IRQ timing. [pagefault]
  • Fixes for DMA, HDMA, so we can have the recent improvements without breaking tons of other games. (SSF2, SFA2, FFMQ, TOP, CT, YI, probably others). [pagefault]
  • Init DMA values to FF (thanks Overload). [pagefault]
  • Fixed windowing issues in Dragon Quest, Star Ocean, Final Fantasy V, Gradius III, and probably other games. [Jonas Quinn, pagefault]
  • Fixed transparency issues in several games, including U.N. Squadron, Final Fantasy 3u/6j, and Star Ocean. [Jonas Quinn, pagefault]
  • Fixed SRAM Mapping. Ys III, Dezaemon, Tokimeki Memorial, Dragon Knight 4, Fire Emblem - Thracia 776, *should* all work nicely now. [Jonas Quinn, Nach]
  • Fixed a special chip SRAM bug. [Nach]
  • Fast ROM is now actually set. [Nach]
  • Straightened out the 48Mb/64Mb ROM map. [Jonas Quinn, Nach]
  • Fixed Uchuu no Kishi Tekkaman Blade. [Jonas Quinn]
  • Fixed ENVxbehavior. [pagefault]
  • Some fixes regarding WRAM. Some Open Bus. Thanks _Demo_ & byuu. [Nach, pagefault]
  • Fixed the source of the Super Turrican crash. It also fixes my current Robotrek game. I pray this doesn't break anything else... [Deathlike]
  • Behold true ROM mirroring. If your translation breaks now, fix it. [Nach, grinvader]
  • Evened out ROM scoring quite a bit. A bunch of beta ROMs which didn't load before now should. Special thanks to Cowering for the Reset Vector Popular Opcode Check code. [Nach]
  • Say goodbye to speedhacks. [pagefault]
  • Changed cycles for scanline 0. [pagefault]
  • Removed special timing for EHi roms. [Jonas Quinn]
  • Fixed game title in SPC files for EHi Roms. [Jonas Quinn]
  • Workaround to fix crashing of certain games (Sim City PAL and Super Tetris 2 + Bombliss) on resolution change. [Jonas Quinn]
  • Silly DSP code removed; should fix a lot of games (including EWJ2). [pagefault]
  • Fixed program counter in RET macro. Dirt Racer now plays with some blinking, making progress :) [pagefault]
  • Implemented some RTO (fixes some FF3 issues). [pagefault]
  • Many hacks removed (we now have less than a dozen, and we have the least of all the emulators that use hacks). [pagefault, grinvader, Nach, Jonas Quinn]
  • Fixed small screen extra line issues (fixes Super Metroid annoying line issue, so now that guy who keeps on coming into the channel annoying us about it can rest in peace). [pagefault, Nach]
  • Fixed bug in hi-res mode (for example, Lufia 2 ending). [MaxSt]
  • Fix some randomness in the SPC core for now. [pagefault]
  • Fixed loading of small ROMs. [Nach]
  • Fixed a bug when the background was cleared to a strange color. [pagefault]
  • Updated the bg scroll registers; fixes a couple of games (thanks anomie, byuu). [pagefault, grinvader, Jonas Quinn]
  • Memory mapping code is now somewhat sane and can be followed. [grinvader, Nach]
  • Updated timing. [pagefault]
  • Readded corrected noise frequencies. [TRAC]
  • SPC RAM cleared properly on soft reset. [pagefault, Nach]
  • Fixed some init glitches. [Nach]
  • Pass some more tests on the test cart. [pagefault, Jonas Quinn]
  • SPC700 init to ffc0. [byuu]
  • Proper logic when drawing sprites while subscreen is present; fixes SMRPG characters disappearing when entering buildings. [pagefault]
  • Removed the Sound Buffering option because it isn't doing anything. [Jonas Quinn]
  • GUI/Exiting SRAM saving only saves if SRAM Check+Save is off or it's on and SRAM has been modified recently without save. [Nach]
  • Super Scope buttons are now configurable. [Deathlike]
  • srand() is performed once! and always once per z execution. Water effect B now also has a lot more effecting. [Nach]
  • Cleaned up GZip reader. GZip reader now also supports transparent reading, namely a regular file with a .gz extension for no apparent reason. [Nach]
  • Added "Show Clock Box" and "Show Rom Info On Load" to the Options menu. [Deathlike]
  • Fixed some bugs that were discovered with Valgrind. [Nach]
  • Changed the default keys for Player 2 to saner defaults. [Deathlike]
  • Fixed some memory leaks. [Nach]
  • Remove B CPU core. [pagefault]
  • No more TURB! [Nach]
  • FPS now displayed correctly for large numbers. [grinvader]
  • Fixed crash after SuperFX savestates are loaded. [Jonas Quinn]
  • No more alpha for PNGs. [Nach, grinvader]
  • Removing unused and probably out of date SPCDUMP. [Nach]
  • Prevented 'auto state save/load' & 'auto increment state slot' from interacting. Former takes precedence. [grinvader]
  • ZSNES will no longer jump back into the GUI randomly if you press F2 / F4 or some other buttons repeatedly. Special thanks to Dan for the clues on how to recreate it. [Jonas Quinn]
  • Added 12 hour clock toggle. [pagefault]
  • GUI special case horizon fixed (thanks Motley, Dan). [Nach]
  • Crammed a "Documentation" button right below the "WWW.ZSNES.COM" button. [ipher, Nach]
  • Fixed crash after enabling Sound Interpolation mid-game. Fixed Gaussian always selected bug when MMX Support is disabled. Some options that are only available with MMX enabled are now hidden if MMX is disabled. [Jonas Quinn]
  • Fixed Clear2xSaIBuffer to clear the first line, too. [Jonas Quinn]
  • Removed off by 1 line fix. [Jonas Quinn]
  • Fixed burning effect in executables compiled with GCC. [Jonas Quinn]
  • Removed some DOS only code from other ports and vice versa. [Jonas Quinn]
  • Added "+ Gamma" and "- Gamma" hotkeys to the Misc Keys menu. [pagefault, ipher]
  • Hacks can now be disabled via command line (-dh). [Jonas Quinn]
  • Get_Date returns correct year now. [Jonas Quinn]
  • SPC filenames are no longer truncated if there is a dot in the filename. [Jonas Quinn]
  • Made gui option save config override dontsave option. Fixed bug #13. [Nach]
  • Fixed crash when MMX is disabled and 25% scanlines with interpolation is enabled (bug #142). [Jonas Quinn]
  • Fixed corrupted graphics when alt-tabbing. [pagefault]
  • Can now display batter power status on laptops. [Nach, pagefault, ipher, David Lee Lambert, drizztbsd]
  • Stupid (and old) mistake successfully corrected after manual tracking; fixed bug #52, and probably lots of other sound issues upon state load... [grinvader, Jonas Quinn]
  • Added new video modes. [Aerdan]
  • Fixed vars in bss section that had no space reserved. Fixed bug #18 on bug tracker. [Jonas Quinn]
  • ZSNES now decodes shift-jis headers correctly... but the font is still limited to 5x5. [grinvader]
  • GCC 4.0 support. [Nach]
  • Fixed a jump to not disable ENV when it shouldn't. [Jonas Quinn]
  • Optimization to frame draw code, only draw frames that change. [pagefault, Nach]
  • Added error message if hard patching fails. [Nach]
  • Fixed the exit procedure. [Nach, Jonas Quinn]
  • Updated license. [Nach]
  • Option to allow Up+Down/Left+Right for speedruns' sake. [grinvader]
  • New variable slow down/speed up options. [grinvader. ipher]
  • Lower memory usage. [Nach, Jonas Quinn, Deathlike]
  • Panic key now resets offset mode and windowing state. [pagefault]
  • Primary Buffer option shouldn't be reversed anymore. [Jonas Quinn]
  • Added pause and frame increment options (buggy). [Nach, grinvader, ipher]
  • Key combos for player 5. [ipher]
  • Mode 4 offset change overflow fix in rendering code. [pagefault]
  • Fixed crashes related to wrong MMX detection. [Jonas Quinn, Deathlike, hector]
  • Major framerate improvement when using new graphics engine. [pagefault]
  • JMA: Fixed some bugs in decompression. Improved performance. Lower memory requirements. Support for JMA v1 files. [Nach]
  • Changed video change accept key to spacebar. [Nach]
  • Added info on load if ROM is patched. [Nach]
  • Fixed 100% CPU usage when no game is running. [pagefault]
  • ZSNESW can now be compiled in MinGW without any fancy NASM patches. [TRAC, Nach]
  • Fixed bugs with SRAM Check+Save option. [grinvader, Nach, Jonas Quinn]
  • Initialized many vars which were not. [Nach]
  • Added comments so people have more of a clue. [pagefault, grinvader, Nach, ipher]
  • Fixed warnings. [Nach, theoddone33, grinvader, Jonas Quinn]
  • Configure script fix for Gentoo users, and debug builds now use -O0, because we can. [grinvader]
  • Partial scons support [theoddone33, Aerdan, Snarius]
  • Added CPU parameter for specific CPU optimizations when compiling for an MS platform. [Nach]
  • Added debug build support for MS ports. [Nach]
  • Can now compile without JMA support. [Nach]
  • Greatly updated, overhauled, and unified documentation. [AspiringSquire, Deathlike, Jipcy, Nach, Noxious Ninja, Richard C., xamenus, and others]

DOS Port:

  • Fixed sample rate to not be able to select 32000 Hz or bigger rates when they are not available under certain circumstances. [Jonas Quinn]
  • 8 bit modes now save images as BMP. [Nach]
  • Can now compile without a debugger. [Nach, Jonas Quinn]
  • Can choose old or new debugger. [SamB]
  • Fixed ROM loading from the command line for DOS when a VESA2 mode is selected. [Jonas Quinn]
  • Now runs proper clean up code on exiting. [Nach]
  • Updates to input code, now supports more parallel pads. [Deathlike]
  • Can now set via command line player 1 and 2 to any input.
  • Rewind can now be used. [Nach]
  • Quick load menu now shows full internal names, or if LFN, as much as the other ports show. [Nach]

Win Port:

  • Fixed a really strange crash problem on Windows 2003 systems. [pagefault]
  • You can now use gamepad in the background without ZSNES having focus. [pagefault]
  • Fixed bugs so ZSNES can be run in VMWare. [pagefault]
  • Can pause emulation in the background. [pagefault]
  • Fixed black screen after the computer was locked. [Jonas Quinn]
  • Fixed inline assembler in winlink.cpp when compiled with optimizations. [Jonas Quinn]
  • Added custom video modes. [Deathlike2, Nach]
  • Debugger now works in this port. [SamB, pagefault]
  • Added KitchenSyncPal and fixed a lot for KitchenSync issues [Deathlike, Poobah]
  • Added ForceRefreshRate as a replacement for Force60Hz. I'm sure someone will fail reading the cfg file for help. [Deathlike]
  • Added Keep 4:3 ratio as requested a while back by gltamarin. This is useful for laptops/LCDs that use non 4:3 resolutions. [Deathlike]
  • Can now set joystick sensitivity. [Deathlike]
  • Can now view ROMs by SNES internal name. [Nach, Deathlike]
  • Changed default option the Windows port uses due to sanity reasons. Also, a check was added to prevent the black screen (and maybe double vision) issue. A message box will now pop up to tell you what options you have. [Deathlike]
  • Disable Screensaver Option now disables all annoying power management stuff. [Deathlike]
  • Changed "High Priority Mode" to "Use A Higher Priority" and Above Normal Priority is used on NT. [Deathlike]
  • Nach input boxes (video, path) now allow pasting via ctrl+v. [Nach]
  • Added NTSC filter. [Blargg, pagefault, ipher]
  • Fixed strange sprite priority bugs after switch to window/fullscreen. [Jonas Quinn]

SDL Port:

  • Fixed bilinear filter in GUI [grinvader]
  • Fixed video change freeze problems in port. [Nach]
  • Make sound processing use less CPU cycles. [Nach]
  • Fixed input responsiveness for controllers 3+. [bssteph]
  • Added freedesktop.org file [pagefault]
  • Fixed screen refresh for SDL software modes when toggling hq2x. [grinvader]
  • Fixed a key repeating bug when changing resolutions. [grinvader]
  • Fixed bug where mouse buttons were conflicting, right mouse click by itself on 3+ button mouse. [Nach]
  • Updated wheel handling. [Nach]
  • Added a Variable OGL mode to center ZSNES output with proper ratio. [NBondoux]
  • Added custom video modes. [Deathlike2, Nach]
  • New scancode handling system, should fix problems with non US keyboard and Mac OS X. Thanks hector.
  • Debugger now works in this port. [SamB]
  • Can now set joystick sensitivity. [Nach]
  • Added Keep 4:3 ratio as requested a while back by gltamarin. This is useful for laptops/LCDs that use non 4:3 resolutions. [Deathlike]
  • Can now view ROMs by SNES internal name. [Nach, Deathlike]
  • Hopefully fixed numlock keypad quick select in the F3 menu. [Deathlike]
  • Fixed bug when trackballs are present; also cleaned up joystick code a bit. [spoon0042]
  • Make stack non executable for ELF. Thanks drizztbsd. [Nach]
  • Mac OS X support. [Nach, hector, BRPXQZME]
  • Removed dangerous checking of environment variable for user's home path. [Nach]
  • Fix compilation on OpenBSD. [pagefault, Nach]
  • Added NTSC filter. [Blargg, pagefault, ipher]

v1.42 - January 19, 2005

All Ports:

  • Corrected output of BRR decode for invalid range values (>12). [TRAC]
  • Fixed sustain level 4 (5/8). [TRAC]
  • More window boxes now have borders. [ipher]
  • Close zip files properly when IPS is not found in zip (fixes crashing with certain zlibs). [Nach]
  • Cleaned up some code. [Nach, ipher, grinvader]
  • Ported chip detection to C, improved BS detection. [Nach]
  • Ported rewind to C (thanks Nach, TRAC). [grinvader]
  • New reminder text. [grinvader, AspiringSquire]
  • Rollback of "Improved accuracy of base rates used for ADSR, GAIN, noise, and echo emulation". [ipher]

DOS Port:

  • Fixed label for Fullscreen/Widescreen options. [ipher]

SDL Port:

  • DESTDIR support. [theoddone33]

v1.41 - January 18, 2005

All Ports:

  • Improved accuracy of base rates used for ADSR, GAIN, noise, and echo emulation. [TRAC]
  • Fixed GUI escape stack corruption if .srm file could not be written to. [Nach]
  • Stereo settings now obey config file. [Nach]
  • Fixed framerate loading from config file. [ipher]
  • ZSNES no longer hacks itself in order to access variables; this eliminates a few issues we had. [Nach]
  • Source code cleanup. [Nach, ipher]
  • Makefile overhaul; ZSNES can now be cross compiled. [Nach, ipher, malcster, SamB]
  • Fixed some invalid memory reads. [Nach]
  • Ported config file creation/loading to C. [MKendora, Nach]
  • Percent of execution now takes h-blank values into consideration. [pagefault]
  • Fixed Winter Gold FX crash. [Nach]
  • Filtered GUI is now enabled by default. [Nach]
  • Save location can now be edited in the GUI. [Nach]
  • Added option to enable/disable auto IPS patching. [Nach, ipher]
  • Saving last ROM info to rominfo.txt can now be turned off. [ipher, Nach]
  • Organized options menu, and split off save related options into its own menu. [ipher]
  • Moved Super System DIP switches to the chip configuration menu. [ipher]
  • More boxes have borders now! [ipher]
  • New one-time user reminder text. [grinvader]
  • Updated about box. [Nach, ipher]
  • Overhauled toaster support. [Nach]

DOS Port:

  • Fixed a number of keyboard shortcuts in the GUI. [ipher]

Win Port:

  • Get_Date() now returns the proper value (it always returned the proper value in DOS). [Nach]
  • Correct timing when compiled with MinGW (Special thanks to Jonas Quinn for all his help in getting ZSNESw compiled with MinGW and working). [Nach]
  • More informative error messages when some DirectX component fails to load. [Nach]
  • Return 0 instead of random value on exit (keeps certain frontends happy). [Nach]
  • Fixed keyboard shortcut for "Trap Mouse Cursor". [ipher]
  • Changed text in netplay window to be more clear about TCP/UDP. [pagefault]
  • Updated ZSNESw compilation instructions in install.txt. [Nach]

SDL Port:

  • Get_Date() now returns the proper value (it always returned the proper value in DOS). [Nach]
  • Fixed a memory leak. [Nach]
  • Fixed buffer underflow in sound code when rate was changed several times. [Nach]
  • Save files can now be correctly saved in locations other than ~/.zsnes. [Nach]
  • Updated video selection menu. (Thanks, Aerdan!) [ipher, Nach]
  • 256x224 R Full for is now actually 256x224, not 320x240. (Thanks, Pieter Hulshoff!) [ipher]
  • 640x480 ODS Win is now actually 640x480, not 512x448. [ipher]
  • Added 1280x1024. [ipher]
  • Changed text in netplay window to be more clear about TCP/UDP. [pagefault]
  • Homepage button to open browser now appears in about box. [Nach]

v1.40 - December 25, 2004

All Ports:

  • Added multiple timing tweaks, fixed various emulation bugs, and many other technical updates, including (but not limited to): SPC core updates (with improved sound decoding), safer memory allocation in certain areas, HIRQ and VIRQ fixes, color add/sub and color bleeding fixes, HDMA improvements, sprite priority and flickering fixes, and a slew of SRAM fixes. Many more games work :D. [pagefault, _Demo_, Nach, TRAC, Overload, theoddone33]
  • Overhauled a lot of code, such as checksum calculation and mirroring code. Overhauled and added much better EHi/Hi/Lo ROM code, improved reset vector, and changed much hard coding to variables. Fixed more SRAM bugs than we can count. Made optimizations to complex loading functions, syntax, memory init (Thanks kode54), execution, and initialization code. Also greatly improved PAL/NTSC detection. Also now has much better chip detection and gives more informative chip names. More games which never loaded before now load properly, such as Dai Kaiju Monogatari 2; it now loads and plays great without the Dejap patch. [Nach]
  • Cleaned up, overhauled, removed, and ported a lot of code (asm to C). [pagefault, MKendora, Nach]
  • Overhauled IO latch behavior, added proper latching behavior and other latch fixes (such as proper latching of bit 7 on $4201), and added proper behavior of RDIO regs. [pagefault]
  • Removed many, many hacks. [Nach, pagefault]
  • There have been some modifications and reorganizations of the GUI, including new path setup and chip configuration windows and a reorganization of the Game Key window. [pagefault, Nach]
  • Updates to the video code, with enhancements of triple buffering, better input support in the video dialog, and other general video code updates and bug fixes, such as a fix for the 60hz mode. [pagefault, MaxSt]
  • New extra options are now available in various locations, like the "GUI burning effect", new commandline options, a new quick key to control players 1/2 with 3/4, and smaller message text. Some obsolete ones have been removed. [pagefault]
  • Some changes in the Input configuaration: Hitting "Set Keys" is now prevented if controller is set to "None". Also, if no controller is selected, the settings of the individual keys are now locked. [Nach]
  • Updated default configuration, in general. For example, stereo sound is now enabled by default at 32khz, with gaussian interpolation. [pagefault]
  • Signed saturation fix for gaussian interpolation (Thanks kode54). [pagefault]
  • Fixed several Netplay issues. [_Demo_, pagefault, Nach]
  • Fixed some of our .zmv movie recording problems. [Nach]
  • Fixed a small bug in SPC saving. [pagefault]
  • Fixed issues with config file saving. [pagefault, Nach]
  • Fixed PNG snapshot filenames and PNG height. [StatMat, Nach]
  • Fixed DIP switch 2 on Super System. [pagefault]
  • Fixed an auto frameskip issue (Thanks MKendora). [pagefault]
  • Fixed rewind when using commandline filename. [StatMat]
  • Fixed some issues when loading ROMs via command line. [Nach]
  • Removed ROM info that appears when loading via command line. [Nach]
  • Added a command-line savestate fix. [StatMat]
  • Fixed an annoying savestate bug. [pagefault]
  • Super Bases Loaded 2 works better, due to a fix in DSP-1 mapping. [_Demo_]
  • Horai Gakuen works better, due to a special fix. [_Demo_]
  • Lufia 2 problems are now fixed. [pagefault]
  • Emerald Dragon now works - again. [pagefault]
  • Many updates on the SPC7110, such as normal timing, special ratio removal, and better pack loading code. [_Demo_, pagefault, Nach]
  • Removed SPC7110 logger and S-DD1 test. [grinvader]
  • Removed support for interleaved SuperFX ROMs. [Nach]
  • Added several improvements and memory map adjustments for more accurate BS emulation. [Nach, pagefault]
  • Added call init code for DSP-2,3, and 4. [pagefault]
  • Added better support for split ROMs with headers and detecting interleaved ROMs. [Nach]
  • Added support for many more ROM extensions. [Nach]
  • ROM info now dumped to rominfo.txt on game load. [Nach]
  • Added more information lines on ROM load, such as CRC32, video, and bank information. [pagefault, Nach]
  • Added support for some NSRT features, such as NSRT header support and support for ROMs using NSRT's JMA compression format. [Nach]
  • Zipped ROMs no longer need a temporary directory. [Nach]
  • Added better handling of bad files. [_Demo_, Nach]
  • Implemented soft IPS patching functionality, with in-zip file support, buffering, and RLE support. [Nach]
  • Added a compatibility update to PPU. Passes one more electronics test (Thanks MKendora!). [pagefault]
  • Fixed variable types in many locations; ZSNES can now play games without hacking the binary to make code segments writable. [Nach]
  • Made ZSNES more HTPC friendly. [pagefault]
  • Fixed many compiler warnings, added compiler optimizations, and more compiler fixes and code cleanups. [Nach, MKendora, theoddone33, pagefault, ipher, SamB]
  • Unicode support partially supported. Will complete later. [pagefault]
  • ZSNES now displays the day it was compiled in the about box. [Nach]
  • Updated authors.txt, support.txt, thanks.txt, and todo.txt. [pagefault]

DOS Port:

  • Fixed cubic spline interpolation. It should actually save the option now! [pagefault]
  • Fixed other various DOS sound bugs. [Nach, pagefault]
  • Fixed a frameskipping bug. [pagefault]

Win Port:

  • Updated icon with Windows XP compliancy. [cdbsi]
  • Added new disable screensaver code. [pagefault]
  • Added a CPU utilization fix. [kode54, pagefault]
  • Added 48khz sound support, updated sound code, and fixed sound bugs. [pagefault, Nach, ipher, StatMat]
  • Fixed a couple of input bugs, such as one concerning the 5th joystick and another that made the mouse get stuck in an endless loop. [pagefault]
  • Removed alternate timer. [pagefault]
  • Fixed Netplay freezing bug. [pagefault]
  • Many new video features, including (but not limited to): HQ2X, HQ3X, and HQ4X graphic filters, support for hi-res and D modes in 32bpp windowed mode (now default), new aspect ratio code for scaling, and the KitchenSync (usable only via the commandline). [MaxSt, pagefault, Darkfalz]
  • Fixes for video code errors, such as those that occured when alt-tabbing in fullscreen, MMX interpolation fixes, and blitter fixes. [pagefault, zsKnight]
  • Snapshots are now numbered and use the full ROM file name. [Nach]
  • Renamed Windows version to Win32. [pagefault]
  • Win32 port can now also be compiled with MinGW (but we won't support it till the next release). [Nach, Jonas Quinn]

SDL Port:

  • Updated icon. [cdbsi]
  • Updated Linux video code to Windows version. [pagefault]
  • Fixed problems with nVidia cards. [Diablo-D3]
  • Fixed audio problems with broken drivers. [Diablo-D3]
  • Added 48khz sound support. [pagefault]
  • Updated joystick input support. [theoddone33, Sander]
  • Fixed savestate incrementor; this caused some crashes. [pagefault]
  • Cleaned up the Linux Autoconfigure [Diablo-D3]
  • Added a couple of things for the start of BeOS compatibility. [theoddone33]
  • Fixed 16->32bpp LUT related bug. [kode54]
  • Added hardcoded alt-enter fullscreen toggle. [theoddone33]
  • Added dialog for why the video mode couldn't be set. [theoddone33]
  • Added circle buffer patch (savestate fix). [zinx]
  • Fixed problem with man page when installing (when man1 directory doesn't exist). [hpsolo]
  • Fixed cmd line sound quality. [pagefault]
  • Fixed zlib and libpng issues. [theoddone33, pagefault]
  • Updated libpng version checking [theoddone33]
  • Added -lm to acinclude.m4 so AC_TRY_RUN doesn't return negative on some systems looking for libpng. [theoddone33]
  • Overhauled makefile. [theoddone33]
  • Fixed install target; -D should not be used. [theoddone33]
  • Added the name of the start address to the error message that occurs when mprotect fails. [theoddone33]
  • Update config.sub. This allows configuration on 64-bit targets, and requires autogen.sh to be rerun. [theoddone33]
  • Added HQ2X filter! [MaxSt, pagefault, zinx]
  • Snapshots are now numbered and use the full ROM file name. [Nach]
  • Renamed Linux version to SDL. [pagefault]

We have also greatly improved support for special hardware in ZSNES v1.40. These require special mention:

  • SuperFX core updates:
    • pagefault
  • SA-1 core updates:
    • pagefault
  • C4 core updates:
    • Research: anomie
    • Main Code: Nach
    • Special thanks to The Dumper and TRAC!
  • DSP-1 core updates:
    • Data Retrieval: pagefault, Overload, The Dumper
    • Main Code: pagefault, Overload, The Dumper, neviksti, Andreas Naive, _Demo_
    • Integration: MKendora, Nach
    • Processing Code: pagefault, Nach
  • DSP-2 emulation:
    • Data Retrieval: Overload
    • Research: Overload, neviksti, MKendora, The Dumper, CaitSith2
    • Main Code: kentaro-k.21
    • Processing Code: pagefault, kentaro-k.21
    • Special thanks to Lord Nightmare!
  • S-DD1 emulation:
    • Data Retrieval: The Dumper, Dark Force, zsKnight, Gary Henderson
    • Research: Andreas Naive
    • Main Code: anomie
    • Processing Code: _Demo_, Nach
    • Special thanks to all the other developers and users who worked on this hard project!
  • ST010 emulation:
    • Data Retrieval: The Dumper, MKendora
    • Main Code: The Dumper, Overload, Feather, Nach
    • Processing Code: The Dumper
    • Code Fixes: pagefault
  • Sufami Turbo support (preliminary):
    • Nach
  • SD Gundam G-Next and Same Game expansion pack support:
    • Nach

v1.36 - July 15, 2002

  • Fixed Gunforce, added invalid HDMA modes. [_Demo_] (Thanks Overload!)
  • New BRR decoding method, this should resolve all the sound issues introduced in 1.35 and fix new ones. (Noise simulation isn't used anymore) [_Demo_]
  • Fixed another bug with command-line netplay. (Windows only) [pagefault]
  • Fixed hang in NBA Live 95 and 96. [_Demo_] (Thanks Overload!)
  • Fixed sound not working on first run. (Windows only) [pagefault]
  • Fixed some more mode 4 issues in the new gfx engine. [pagefault]
  • Added offset mode disable toggle to 8-bit new gfx engine. [pagefault]
  • Fixed SPC hang in 90 Minutes European Prime Goal by clearing spcram. [_Demo_]
  • Updated fix for Clayfighter to fix some bugs in battle. [_Demo_]
  • Fixed crash with certain games. (SDL/*nix only) [theoddone33]
  • Added better OBC1 detection. [_Demo_]
  • Special hack for Samurai Showdown IRQ problem. [_Demo_]
  • Special hack for Kamen Rider menu, requires special latch reading. [_Demo_]
  • Special hack for Super Famista 1 & 2 SPC bugs. [_Demo_]
  • Fixed some more bugs in video code. (Thanks Perryman for the video table) (Windows only) [pagefault]
  • Fixed Digital Devil Story hang by modifying the spc code. You must start a new game for the fix to work. [_Demo_]
  • Modified work ram init value to 0x55. (Thanks TRAC)

v1.35 - June 23, 2002

  • Fixed triple buffering corruption on some VESA 2.x video modes, a very nasty bug which accidentally slipped into version 1.337. [stainless] (DOS only)
  • Added full scanlines to 320x256x8b Mode-X. Uses the same timings as the 256x256x8b full scanlines, so it may or may not work correctly depending on your video card. [stainless] (DOS only)
  • Linked the EAGLE engine to the filtered GUI option and fixed guassian interpolation which has been broken since version 1.71b. [stainless, kode54] (DOS only/all ports)
  • Cleaned up the 320x480x8b and 320x240x16b blitters and added MMX support to 320x480x8b for a nice speed increase. [stainless] (DOS only)
  • Added 640x400 alternatives to 512x384 video modes for video cards which don't have them. Added a small screen option to the 512x384 and 640x400 video modes with MMX support. Also added a "wide screen" option to 640x400 video modes. [stainless] (DOS only)
  • Added a full screen option to the 320x480 video modes, along with a basic interpolation to 320x240x16b and 320x480x16b. Full screen in 320x480x16b has full/25%/50% scanlines and interpolation has full scanlines. [stainless] (DOS only)
  • Added experimental 800x600 video modes. Fixed 'n' command-line option to allow toggling of 25%/50% in addition to full, also cleaned up the command-line options message and the config file. Noticed some video modes were way off-centered, fixed that too, should now be perfect. [stainless] (DOS only)
  • Fixed printing of MMX enabled message on the GUI background if you checked MMX SUPPORT under CONFIG -> OPTIONS. Also, if you check MMX SUPPORT by using the keyboard shortcut it will now attempt to actually detect MMX before enabling it. :) [stainless, pagefault] (DOS only)
  • Command line support in windows port [StatMat]
  • Fixed problem when some video modes were not being saved. (Windows only) [pagefault]
  • Lots of updates to Linux/SDL version, including sound fixes, video code updates and other misc bugs. [theoddone33, Thorsten Glaser, Wilbern Cobb]
  • Fixed gamma in PNG snapshots. [pagefault]
  • Added several new goodies to the GUI, which include a force 8-bit sound option (fixes a few cards under WinMe), a second water effect, and an experimental smoke effect. [stainless] (DOS only/all ports)
  • Fixed problem with sound getting disabled when running command-line network games. (Windows only) [pagefault]
  • Updated video code in Windows port to properly display 239 line modes. (Windows only) [pagefault]
  • Commented, unified, and cleaned up the Mode-Q and Mode-X blitters. I did a major overhaul to the DOS video code, I cleaned up and reorganized it alot, and there seem to be no problems as of yet. [stainless, TRAC] (DOS only)
  • Fixed a bug in sprite priority rotation. (fix damage in FFMQ) [TRAC]
  • Fixed long delay between battles and fixed flickering colours on map in Front Mission. [pagefault]
  • Fixed hang when picking up apples in Equinox. [pagefault]
  • Fixed keyon bug in DSP code, fixes sounds in Flaskback 3 Language Edition (Thanks neviski) [_Demo_]
  • Fixed "disco colours" in NBA Hangtime when the ball drops. [pagefault]
  • Fixed an NMI issue with register $4212, fixes hang in Cu-On-Pa, Bubsy and others. [pagefault]
  • Fixed a mode 4 bug in the new graphics engine that was causing the title screen in The Lost Vikings to be scrambled. [pagefault]
  • Added support for Super System arcade system, set DIP switches in add-on's menu in GUI. Games MUST be zipped in order to load. [pagefault]
  • Added special support for Earthworm Jim 2 sound effects. [_Demo_]
  • Added hack for Deaetonosama Apareitiban. [_Demo_]
  • Fixed super scope position reading. [_Demo_]
  • Modified a few timing things. [_Demo_]
  • Fixed some 65816 instructions in processor emulation mode. [_Demo_]
  • Added special timing for Grand Prix 3. [_Demo_]
  • Modified sound decoding another time (helps various noise sounds like DQ6). [_Demo_]
  • Modified joypad reading for VS Collection. [_Demo_]
  • Special modification for Bahamut Lagoon and Clay Fighter to delay write to the hdma register. (those games need dma delay implemented) [_Demo_]
  • Lots of other minor fixes and things we forgot to mention.

v1.337 - September 30, 2001

This release is dedicated to zsKnight and his family

All ports

  • Added a customizable key to toggle display of the game clock [pagefault]
  • Added support for up to 100 SPC file saves per game [pagefault]
  • Added customisable keys to increment and decrement the save state slot [pagefault]
  • Added a customisable key to quickly save an SPC file [pagefault]
  • Added force NTSC/PAL and force HiROM/LoROM options to GUI [pagefault]
  • Added a customisable key to toggle the display of the FPS counter [pagefault]
  • Added keyboard shortcuts to video options menu [pagefault]
  • Added feature to automatically increment save state slot after each save [pagefault]
  • Added new 8-point sound interpolation and two new lowpass filters (requires a fast processor, 8pt interpolation and high quality lowpass requires an MMX processor) [kode54]
  • Fixed an annoying bug when the menu selection bar would be floating in thin air (Thanks to EMu LoRd for pointing this out) [pagefault]
  • Fixed MMX toggle option, now saved when you restart ZSNES [pagefault]
  • Fixed freeze/crash when saving SPC files [pagefault]
  • Fixed filtered GUI option with 2xSaI enabled not refreshing the screen [pagefault]
  • Fixed graphics when reseting a game with 2xSaI engine on and the FPS counter and/or game clock on [pagefault]
  • Fixed Vortex, Clayfighter 2, Mr. Nutz, Tenchi Wo Kurau Sangokushi Gunyuden and others now working again [_Demo_]
  • Fixed Umi Hara Kawa Se and Tin Tin in Tibet [_Demo_]
  • Fixed LoROM/HiROM detection code, Star Trek: Deep Space Nine and possibly others now working [pagefault]
  • Fixed Front Mission: Gun Hazard and Pocky and Rocky, now working again [_Demo_]
  • Fixed Neugier and Battle Grand Prix freezing after a certain point in the game. [_Demo_]
  • Fixed bug in rom header information and checksum status display, fixes Tales of Phantasia and others [pagefault]
  • Fixed Marko's Magical Football copy protection [pagefault]
  • Fixed problem with Filtered GUI enabled and parts of game screen would show up in GUI menus [pagefault]
  • Fixed frameskip command-line offset [pagefault]
  • Fixed Sim Earth, now loads but map is still not visible [_Demo_]
  • Fixed crash in Home Alone when starting a new game [_Demo_]
  • Fixed sprites in Super James Pond 2 and Kirby Avalanche (Thanks Snes9X for the info) [_Demo_]
  • Fixed 256x239 SNES resolution offset in Windows and Linux ports, games that use this resolution should now be displayed properly in these ports [_Demo_]
  • Fixed freeze in Accelebrid after a few seconds of gameplay [_Demo_]
  • Fixed cursor getting messed up in Windows and Linux ports when using a 16-bit desktop [_Demo_]
  • Fixed bugs when switching between fullscreen and windowed modes with fullscreen button in Windows and Linux port [pagefault]
  • Fixed Triple Buffering and vsync options so they can't be enabled at the time (Triple buffering includes vsync automatically) [pagefault]
  • Fixed sprite layer disappearing when changing screenshot formats or moving the F1 menu [pagefault]
  • Fixed a clipping offset bug in the new gfx engine [pagefault]
  • Fixed BG3 issue with sub-screens in new graphics engine, fixes gfx in Bahamut Lagoon's intro and lots of other games [pagefault]
  • Fixed timing problem in Clock Tower that caused it to freeze randomly in-game, implemented a hack for now [pagefault]
  • Fixed Cu-On-Pa freezing when starting a new game (Thanks to Lordtech for the help) [_Demo_]
  • Optimised global code base, most people should see a performance increase [pagefault, stainless]
  • Moved vsync option from game options menu to video options [pagefault]
  • Improved S-DD1 decompressed pack loading and execution, increases performance in S-DD1 decompressed pack games [pagefault]
  • Lots of debugger fixes and additions [byuu, bongo]
  • Removed disable screensaver text from DOS and Linux ports [pagefault]
  • Updated water effect code to using lighting effects [stainless, kode54]
  • Improved SPC700 sample processing, fixes sounds in numerous games [_Demo_]
  • Disabled H-DMA for Bahamut Lagoon and Mortal Kombat, fixes some gfx problems [pagefault]
  • Changed default keyboard layout for player 2 as some keys were overlapping player 1 (Oops!), If you were having problems buying things in FF4 or in other games make sure to change your keys for player 2. [pagefault]
  • Cleaned up config file in Windows and Linux ports, removed DOS related comments [pagefault]
  • MMX option now checks for a MMX processor when enabling it in the GUI, also no longer crashes on processors without a cpuid when detecting MMX [pagefault, kode54]
  • Last netplay IP address used is now saved in Windows and Linux ports [pagefault]
  • Reorganized sound menu; removed sound interpolation checkbox and made a new list of different types of interpolation: gaussian (original interpolation with enable interpolation option), cubic spline and 8-point interpolation. Also made a new list of lowpass filters. [pagefault]
  • Removed FPU copy from -? option on command line message, since it is no longer supported. Also cleaned up that message in general [stainless]
  • FPS at program start option no longer enables FPS display when auto framerate is not enabled [pagefault]
  • Updated video interpolation code, now looks better than before [kode54]
  • Lots of misc GUI fixes and cosmetic tweaks [pagefault]
  • (UPDATE) Added surround sound to Windows and Linux ports, updated filter in DOS port (This was left out of the previous whatsnew file) [kode54]

DOS v1.337

  • Added grayscale mode toggle to GUI [pagefault]
  • Added support for 5 SNES gamepads on LPT1 [ZDrumm]
  • Added two new 256 color linear VGA video modes, 256x224 and 256x240 [stainless]
  • Added proper gamma correction, now ranges from 0 (1.0) to 15 (~2.0) in 8bpp modes [stainless]
  • Fixed Filtered GUI option, now works [pagefault]
  • Fixed full scanlines disappearing in some modes [pagefault]
  • Fixed a handful of bugs in the joystick code which may cause the joystick not to work if it has a driver installed under Win9x control panel [stainless]
  • Fixed date problem in S-RTC games not reporting the proper day of the week [stainless]
  • Fixed issue with some sound blaster compatible cards not working properly in the DOS port [kode54]
  • Reordered video modes in alphabetical order [stainless]
  • Improved SNES pad reading routine, any speed hit now should be minimum when using a snespad adaptor [pagefault]
  • Improved interpolation performance [stainless]
  • Default keys for player 1 are now the same as Windows and Linux ports [pagefault]
  • You can now use / in command line options in addition to the previous - character [stainless]

Win v1.06

  • Added option to toggle the trap mouse cursor feature which prevents the mouse cursor from leaving the window by accident [pagefault]
  • Added 640x480 DS WIN; 1024x768 DR FULL; 1280x960 S/DS WIN, S FULL; 1280x1024 DR/R/DS WIN and FULL resolutions [pagefault]
  • Added a more meaningful message when changing to a resolution isn't supported [pagefault]
  • Fixed problem with SRAM not being saved when pressing ALT-F4 in game [pagefault]
  • Updated icon yet again, looks really nice. [enigMa]
  • Fixed possible crash when exiting [pagefault]
  • Fixed bug when scrolling in scrollboxes in the GUI would not trap the mouse cursor inside the scrollbox like the DOS port does [pagefault]
  • Either alt key can now be used when using the alt-enter combination to switch to fullscreen [pagefault]
  • Removed triple buffering option from windowed video modes (it does not work in windowed mode) [pagefault]
  • Optimised some Windows port specific code, should give a small speed boost for most people [pagefault]
  • Rewrote mouse input code, much more efficient now. [pagefault]
  • Reordered video modes in alphabetical order; removed 64x52 and 128x112 resolutions (Thanks to Terrorcide and McGuiver for helping me test this out) [pagefault]
  • Improved performance in 32bpp windowed modes [pagefault]
  • Rewrote some of the audio code to be much more efficient, also added MMX optimisations [pagefault, kode54]
  • When switching to windowed mode from fullscreen, the window position is now remembered [pagefault]
  • Removed large sound buffer and exclusive mode option, they shouldn't be needed anymore [pagefault]
  • Now uses idle task priority when in GUI and window is not active, should also smooth task swtiching on slower computers [pagefault]
  • (UPDATE) Fixed server IP bug when using zbattle.net or command-line options to connect [pagefault]

Linux v0.37

  • Added autoconf support for easy compiling [Diablo-D3, amit, theoddone33]
  • Fixed sound buffering in linux port to improve sound on some cards [Diablo-D3]
  • Implemented S-RTC time functions, FEoEZ and other S-RTC games will now report system time in game [pagefault]
  • Now supports compiling with gcc 3.0.0 [EvilTypeGuy]

zsKnight Leaves - July 23, 2001

I'm sorry to say this, but this marks my permanent leave from the ZSNES project, anything related to this, and emulation overall. The reason why is that my dad just passed away today (he died in his sleep, which is strange since he was perfectly healthy yesterday night), so I'm going to have to spend more of my energy devoted to helping my family. My dad is also the main person who provides the finances to the family (since my mom doesn't work), plus I still have about 2 more years to go before I graduate from university, so my immediate future doesn't look that great because with my dad gone, that would mean that I need to put up more responsibility towards taking care of the family instead of studying. But I just hope that everything will go well. Thanks to all you supporters for everything. Sorry for the lack of a proper goodbye though, so I'll probably update once more after I get out of this shock in another day.

- zsKnight

v1.31b - July 3, 2001

All ports

  • Fixed Super Punchout, now working [zsKnight, _Demo_]
  • Fixed SD Gundam GNext again [_Demo_]
  • Final Fantasy Mystic Quest now works again [zsKnight]

Win v1.04

  • Fixed grayscale toggle [pagefault]
  • Updated icon again for black backgrounds [enigMa]

Linux v0.31

  • Now compiles and runs on QNX6 systems [TheAlien]

v1.31 - June 27, 2001

All ports

  • Fixed Mode 4 offset bug (Fixes Bust-A-Move, Puzzle Bobble possibly others) [zsKnight]
  • Emerald Dragon is now working [_Demo_]
  • Fixed Last Bible 3 DMA problem (Thanks to SNES9x for the info) [_Demo_]
  • Fixed Super Robot Was Ex (Thanks again to SNES9x for the help on this) [_Demo_]
  • Moved disable SPC emulation option to sound menu where it should be [pagefault]
  • Fixed Wizardry 4 and Honkakuha Igo Gosei, interleaved funny [_Demo_]
  • SD Gundam GNext no longer crashes ZSNES, and actually is playable now. [_Demo_]
  • Spindizzy worlds should work again [_Demo_, zsKnight]
  • Dezaemon sprites working now, had to clear OAM address when first address byte is written to [zsKnight]
  • Power Rangers the Movie working, was reading from register 2144 [_Demo_]
  • King of Rally now working [_Demo_]
  • Emerald Dragon working, added a hack to disable ENVx for that game [_Demo_, zsKnight]
  • Full Throttle Racing working, fixed a bug with the wai 65816 instruction [_Demo_, zsKnight]
  • Renamed black and white mode to grayscale mode [pagefault]
  • Got Traverse Starlight and Prairie to go further, but it still freezes after several scenes [zsKnight]
  • Mario RPG minecart Mode 2 scene working better now [zsKnight]

Win v1.03

  • Added disable screensaver feature to disable screen saver while ZSNES is active [pagefault]
  • Fixed yet another DirectInput slowdown [pagefault]
  • Added joystick POV hat support (Thanks to kode54 for testing and fixing my code) [pagefault, kode54]
  • Added error messages and directions if DirectX 8.0 is not installed [kode54]
  • Fixed another Windows 2000 freeze on exit bug [pagefault]
  • Fixed BSOD when loading roms on some systems [pagefault]
  • Hopefully fixed a crash when multiple roms where in a single zip file (only one rom can be loaded per zip file) [pagefault]
  • Fixed a possible crash when loading/continuing a game (Thanks to Metus for pointing this out) [pagefault]

Linux v0.29

  • No changes

v1.30b - June 16, 2001

All ports

  • Support for Star Ocean S-DD1 decompressed pack is now enabled. [zsKnight]
  • Fixed bug in H-DMA code, fixes Hook and Bugs Bunny and maybe others (Thanks to Gary of Snes9X for help on this) [_Demo_]
  • Updated documentation [Matt Kendora]
  • Fixed new gfx mode checkbox in options menu [pagefault]

Win v1.02

  • Added 800x600 DR FULL mode (scroll down to the bottom of the mode list to see it)
  • Fixed timing problem in games when 58 seconds was 1 minute in ZSNES [kode54, pagefault]
  • Fixed voices in ToP opening and Star Ocean [pagefault]
  • Fixed another DirectInput slowdown [pagefault]
  • Fixed joystick 5, it should be working now [pagefault]
  • Optimised code some more, giving 3-5 FPS boost on most systems [pagefault]

v1.30 - June 13, 2001

All ports

  • Bubsy 2 working again [zsKnight]
  • Batman: the return of the joker working now [_Demo_]
  • Sound Novel T-Cool and Derby Stallion 96 memory mapper added [_Demo_]
  • Fixed BRR block header bug (fixes Raiden Densetsu, Chrono Trigger, Gundam Wing: Endless Duel, and a few other games) [_Demo_]
  • Updated documentation [Matt Kendora]
  • New whatsnew.txt format [pagefault]

Win v1.01

  • Updated icon [enigMa]
  • Added 1280x960 DR, DR FULL modes to Windows port [pagefault]
  • Fixed random crash when loading roms in Windows port [pagefault]
  • Rewrote resolution switching code [pagefault]
  • Window now moves much smoother and faster [pagefault]
  • Readded large sound buffer option [pagefault]
  • Fixed CPU usage when window was minimized [pagefault]
  • Fixed multiple instances when window was minimized [pagefault]

Linux v0.29

  • OpenGL support [hpsolo]
  • Bilinear option (w/ filtered GUI) [hpsolo]
  • Fixed video mode descriptions (zsnesl.cfg) [hpsolo]
  • Resizable windows [amit]
  • Filter options (scanlines, 2xSaI, etc) for OpenGL modes [zinx]
  • Many more video modes for OpenGL, including full screen [hpsolo]
  • Joystick POV hat support [hpsolo]
  • Added support for 5th Joystick [hpsolo]

v1.29, Win v1.00 - June 1, 2001

  • Implemented triple buffering in full screen mode (Huge thanks to whatabubba for his help on this and cleaning up the code) [whatabubba, pagefault]
  • Fixed top 8 lines being invisible of FFMQ [zsKnight]
  • Optimised DirectDraw code some more giving a 10-15% speed increase [pagefault]
  • Fixed black screen when switching windows [pagefault]
  • Improved loading and shutdown time [pagefault]
  • Rock 'N Roll Racing is working again [zsKnight]
  • Fixed Lennus 2's sprites [zsKnight]
  • Almost figured out Wizardry 4's rom format. It seems like this game was incorrectly dumped so everything in it is out of order. [zsKnight]
  • Final Fight 2 is working again [zsKnight]
  • Vsync option now works in triple buffering mode [pagefault]
  • Now shows minimize window animation when minimizing [pagefault]
  • Fixed mouse pointer under full screen mode [kode54]
  • New ZSNES icon in Windows port (Thanks for all your entries) [enigMa]

v1.28b, Win v0.99 - May 28, 2001

  • Added a filtered GUI option to allow graphics engines such as 2xSaI to be used in the GUI [zsKnight]
  • Fixed SA-1 save states [zsKnight]
  • Fixed Breath of Fire crashing bug when loading [theoddone33]

v1.28, Win v0.99 - Unknown Release Date

  • Added option to allow multiple instances of ZSNES (off by default) [pagefault]
  • Fixed Lufia 2 sprite disappearing bug [zsKnight]
  • Fixed quick menu crash problem when the entries other than the first one is selected when the load menu is opened [zsKnight]
  • Modified SPC700<->65816 timing again to get Hook working [zsKnight]
  • Added more keyboard shortcuts to GUI [pagefault]
  • Fixed vram read to get Smash Tennis working again [zsKnight]
  • Hopefully fixed lockup when exiting Windows port [pagefault]
  • Added a spc700 timing hack for Super Final Match Tennis until I re-write the timing engine later (but not anytime soon though) [zsKnight]
  • Kinda got Rendering Ranger 2 to go further, but this game seems to use some picky timing, so this will have to wait until I re-write timing in the future. [zsKnight]
  • Removed large sound buffer option since it wasn't really useful [pagefault]
  • Fixed 16bit access to address $001FFF (or equivalent). Fixes Super Tetris 2+Bombliss. [zsKnight]
  • Implemented 128KB sram support. Dezaemon runs now (but it suffers graphics glitches at the moment) [zsKnight]
  • Fixed Wordtris (reading from 002100) [zsKnight]
  • Fixed reset function in William's Arcade Classics [zsKnight]
  • Tuff-E-Nuff works now (another timing hack *sigh* )
  • Added exclusive DirectSound mode option [pagefault]
  • Fixed corrupt graphics in Rock'n Roll racing (reading from invalid memory) [zsKnight]
  • Added alternate timer for people having problems with zsnes running too fast [bootgod,pagefault,zsKnight]
  • Fixed corrupt graphics in Captain America (also reading from invalid memory) [zsKnight]
  • Implemented latest save state selection in Windows port [pagefault]
  • Added v-sync to Windows port (enable in options to use it, should fix most graphical tearing issues) [pagefault]
  • Fixed mid-screen OAM updating. Uniracers works in 2 player mode. [zsKnight]
  • Combined the new header detection method with the old one, producing a much better method [zsKnight]
  • Added SA-1 read/write to BWRAM bitmap mode in the lower banks [zsKnight]
  • Fixed "freeze data" text [hpsolo]
  • Fixed SA-1 write to BWRAM bitmap mode. It seems like this was the main cause of the level-up screen not working in Mario RPG. [zsKnight]
  • Fixed cpu usage when ZSNES is in the background doing nothing [pagefault]
  • Re-wrote character conversion 1 for 2bpp, implemented cc1 for 4bpp [zsKnight]
  • Fixed vertical high resolution mode for tile priority 1 [zsKnight]
  • Fixed Terranigma overworld glitch in the new graphics engine 16bit engine [zsKnight]
  • Enabled RTC in Windows port [pagefault]
  • Moved the Transparent Message option from the Options to the GUI Optns section. [pagefault]
  • Added Trainered rom support [zsKnight]
  • Fixed BG4 graphics in certain games (fixes Digital Devil Story) [zsKnight]

v1.26, Win v0.97 - May 17, 2001

  • OBC1 support broke in a recent CVS update. Fixed now. [zsKnight]
  • Added full scanlines to the Win/Linux port [zsKnight]
  • Added Mouse Wheel switch [zsKnight,pagefault]
  • Fixed problem with interpolation/2xSaI/scanlines being saved in the windows port [zsKnight]
  • Improved 512 byte header support. This should improve compatibility with some games [zsKnight]
  • Added 768x672 and 1024x896 DR, R windowed video modes to Windows port [pagefault]
  • Windows port now uses the primary DirectSound buffer [pagefault]
  • Modified 65816<->SPC700 timing. I hope this doesn't break anything [zsKnight]
  • Fixed a vram read behavior problem (fixed Equinox dungeons) [zsKnight]

v1.25, Win v0.93 - May 15, 2001

  • Fixed cheat menu text when game was not loaded [pagefault]
  • Fixed unlabed checkbox in DOS port [pagefault]
  • DSP1 - Fixed plane controls in Pilotwings [_Demo_]
  • dosintrf.asm - Fixed header detection in the dos port [zsKnight]
  • gui.asm - Video mode checking done at initialization [zsKnight]
  • Enabled mouse wrap in the Windows and Linux ports [pagefault]
  • Fixed full screen mode switch when the user starts ZSNESw before selecting any full screen modes [zsKnight]
  • Made default video mode 512x448 windowed in Windows port [pagefault]
  • Prevented enter key from affecting gameplay on returning from F1 and F3 menus [zsKnight]
  • Added minimize button to the Windows port [pagefault]
  • Added always on top option in GUI options menu [pagefault]
  • Menu fix for 8bit graphics modes [zsKnight]
  • ZSNESW now remembers the window position on your desktop (can be disabled in GUI options) [pagefault]
  • Fixed crashing problem with some IPS's in ZIP's [Teuf, zsKnight]
  • Ported to DirectX 8.0 which fixed some problems and improved performance (DirectX 8.0 is now required to run ZSNESW) [pagefault]
  • DSP1 - Fixed map offset problem in Pilotwings [zsKnight]
  • DSP1 - Fixed rings being mysteriously passed problem in Pilotwings [zsKnight]
  • Fixed DirectSound crash when a normal priority buffer could not be acquired [pagefault]
  • Fixed DirectInput compatibility on some computers [pagefault]
  • Optimized DSP1 code for better performance [teuf]
  • Added proper full main/sub-screen window clipping in the new gfx 16bit engine (fixed Illusion of Gaia/DKC2 selection screens, etc) [zsKnight]
  • Added checksum/header name/chip type header display upon game load [zsKnight]
  • Added PNG snapshot support which is selectable in the F1 menu [Matt Kendora]
  • Stunt Race FX old graphics engine force fixed [zsKnight]
  • Fixed MegamanX copy protection schemes [zsKnight, Matthew Kendora]
  • Fixed TopGear 2 PAL version from detecting a PAL system [zsKnight]
  • Implemented OBC1 chip (for Metal Combat) [zsKnight]
  • Fixed Mode 7 bug in Super Ghouls and Ghosts [zsKnight]
  • Added turbo keys for L & R keys [zsKnight]
  • OBC1 emulation support. Metal Combat works! [zsKnight]
  • You can now customizable the colors to the title bar and window colors. [zsKnight]
  • Optimised global code to provide up to a 50% speed increase on it on most processors [pagefault]
  • Added black and white mode to Windows and Linux ports [pagefault]
  • ZSNESW is now packed with the newest version of UPX [pagefault]
  • Cleaned up the cfg files for windows/linux ports [pagefault]
  • Fixed command-line crash in the Windows port (Thanks Matt Kendora) [pagefault]
  • Save/Load state now displays which state is being loaded [hpsolo]
  • Added double buffering support to Linux port [teuf]

v1.20b, Win v0.88 - April 30, 2001

  • Final Fantasy Mystic Quest works again.
  • Fixed Empire Strikes Back crashing bug in the millenium falcon sequence (hopefully this will fix some other games too)
  • Removed all self-modifying code in ZSNES. This will make ZSNES crash a lot less on certain systems, especially during mode 7 sequences. Thanks Ivar!
  • Implemented S-RTC chip, using the system clock as the actual time (The game will make you set the time though, but it will just be replaced with the system time in-game). Thanks to John Weidman and Dark Force for the info on this chip!
  • Fixed crashing bug in certain mosaic scenes (eg. FF3 Phantom Forest) in the new graphics engine
  • Fixed a nasty crashing/corruption bug in the new graphics engine (both 8bit and 16bit)
  • SPC7110 emulation! This is based on the information reverse engineered by the hard working folks at dejap translations, Dark Force and John Weidman.
  • Altered HiROM/LoROM detection a bit - Fievel goes West works now
  • Open source preparations [teuf]
  • In-game clock working for the windows port. [kode54]
  • Fixed a memory leak problem in the new graphics engine [TRAC]
  • Added Cubic Spline Interpolation [Anti Resonance]
  • Fixed a assign/compare size bug in the new graphics engine [TRAC]
  • Fixed b flag setting in BRK instruction in 6502 emulation mode [zsKnight]
  • Added SPC7110 logger file output to help in the filesize clipping of the SPC7110 data files [zsKnight]
  • Fixed a memory leak bug, fixing that nasty Win2K crash bug [Matthew Kendora]
  • Fixed key combination release [Maxim]
  • Fixed source code warnings/added necessary includes [Maxim]
  • Added high priority mode for Windows 2000 users and slower computers (works on Windows 9x as well) [pagefault]
  • Added large sound buffer option for people having DirectSound problems. [pagefault]
  • Fixed problem with ZSNESW and Opera causing a BSOD. [pagefault]
  • Fixed up error reporting for people experiencing problems. [pagefault]
  • Improved performance on 3dfx cards by compiling with DirectX 8 SDK. [pagefault]
  • Fixed a sound problem with people with messed up config files. [pagefault]
  • Fixed FF3 flashing line problem [zsKnight]
  • Fixed mysterious sprite disappearing bug in the new graphics engine [zsKnight]
  • Reduced noise in ToP opening theme. It works fine in the DOS port, but the windows port still seems to produce some static, probably because of the way how sound is updated in that port. [zsKnight]
  • Updated Super 2xSaI and Super Eagle code (should be much faster now on MMX processors) [Kreed, added by pagefault]
  • Added gzip support [teuf]
  • Added support for ViBRA16 cards [Peter Santing]
  • No longer requires zlib.dll file, now statically linked. ZSNESw won't crash anymore if you try to load a .zip file without that dll file. [pagefault]
  • Now compiled using an optimising compiler [pagefault]
  • Almost a fully re-written DSP-1 emulation engine! [zsKnight, theoddone33, pagefault, teuf]. Also thanks to CrASH_Man for the 3x3 inverse matrix formula.
  • Fixed memory leak problem in the windows port during exit [pagefault]
  • And more ...

Source Code Released - April 2, 2001

The ZSNES Sources have finally been released in the CVS repository of the sourceforge page. We also would like to welcome Teuf as a member of the ZSNES team as an assistant coder! He's helped us with quite a lot in the past while, including (but not limited to) setting up the Source Forge page, helping us to write the open source documentation, fixing up the ZSNES sources to not require a custom version of nasm, organizing the sources into directories, modifying the make file, etc. With the sources released, we also hope to release an updated binary soon. Click on the Sourceforge link on the left side of the screen to access the sources. The sources will also be available in a ZIP file for those who don't want to use CVS.

v1.17b - December 27, 2000

  • A nasty bug has crept into the DOS version in the 8-bit video modes, so a fixed version (v1.17b) is released (it has the same filename as v1.17 so just overwrite it).

v1.17, Win v0.85 - December 25, 2000

  • Added slow-down key. You can configure it in Misc -> Game Keys
  • Invulnerability bug of the 3rd boss in Demon's Crest in the good checksum roms is fixed through rom mirroring. I also noticed that this fix is the same as what the author of SNEeSe told me before about on some MegamanX1 roms, but I never had that rom so I never added this until now. Guess that rom is also fixed too.
  • Changed memory initialization values - Lost Viking 2 works again
  • 65816: Fixed WAI instruction timing with HIRQ's. Top Gear 2 - 2 player mode works now
  • Improved IRQ re-execution timing precision
  • Starfox 2 beta now runs with sound!
  • Fixed flickering problem in Starfox 2 beta
  • Added Mode 2 16x16 tile offset per tile mode
  • (Win32) Improved the timestamps on UDP headers. This should (hopefully) solve those out of sync (where both sides see different things) problems with certain connections (ie. T1/LAN connections) in netplay.
  • (Win32) Added a big notice in netplay.txt. For all of you who used netplay and had poor experiences with a ping time of less than 300ms, read it! Also added a more realistic system requirements description for decent netplay in netplay.txt rather than a cpu speed estimate.
  • Changed reverse stereo method to become invisible to the sound registers in emulation

v1.14, Win v0.80 - November 27, 2000

  • Fixed configuration files from removing spaces from directory names
  • (DOS) Fixed 640x480 vesa2 scanline+interpolation display problem
  • (Win32) Improved Windows speed in 32-bit windowed mode. Should give around an 18% speed increase in FPS.
  • (Win32) More netplay improvements. Shouldn't be as jumpy when one side lacks input.
  • (Win32) Starting netplay will now force the max frameskip to 3 if it is less than it and also force on auto frameskip.
  • (Win32) MMX optimised netplay with back buffer enabled.
  • (Win32) Fixed load state in netplay to load properly instead of sometimes stalling for no reason
  • (DOS) Accidently deleted the code to initialize IPX. Fixed now.
  • Fixed a configuration loading problem when loading ZSNES from a different directory.
  • (Win32) Attempted to fix those out of sync problems (although I don't know if it's fixed now since those problems rarely happen to me)
  • (Win32) Displayed the current filename in the load window for those files with extra long names.
  • (Win32) Added nickname support to NetPlay. There's a 9 character nickname size limit.
  • (Win32) Added actions to chat (similar to how mIRC works - use /me <action> )
  • (Win32) Nicknames can be changed in the windowed chat by typing /nick <new nickname>
  • Added a small buffer to the in-game chat to allow up to 5 chat strings displayed at once.
  • Local chat strings now appear in that buffer
  • Thickened black borders on the 5x5 font
  • Extended in-game chat length by around 30 characters
  • Fixed up Interpolation

v1.12, Win v0.74 - November 14, 2000

  • (Win32) Hopefully fixed up those green display bugs in scanlines/2xSaI in 1:5:5:5 16bit modes.
  • (Win32) Improved lost packet recovery time and reduced the number of lost packet stalls in UDP netplay (should produce more fluid netplay)
  • (Win32) Fixed up crashing bug in Tales of Phantasia with a 512 byte header
  • Extended filename length of the Quick Menu
  • (Win32) Hopefully fixed up the mouse wheel support for certain mice
  • Temp .ZIP directory is now cleared if it exists prior to another .ZIP file being loaded.
  • (Win32) Improved DirectInput error handling

v1.11, Win v0.72 - November 12, 2000

  • (Win32) ZSNESw won't crash anymore if you don't have a soundcard or if DirectSound fails to initialize.
  • (Win32) Fixed a nasty performance bug with certain types of joystick/drivers installed, causing the FPS to be slower for no reason.
  • (Win32) Wrote an MMX optimised blitter for 16bit non-D windowed and full screen modes.
  • (Win32) Added simple wheel mouse support.

v1.10, Win v0.70 - November 7, 2000

  • Fixed games that turns on the x239 resolution (eg. Chrono Trigger battles) when scanline mode is enabled
  • (Win32) Fixed up crashing bugs on extra long filenames with underscores
  • (Win32) Hopefully fixed the odd colored interpolation in 1:5:5:5 16bit color settings
  • (Win32) Hopefully won't crash anymore when the temporary directory exists prior to unzipping a .zip file
  • (Win32) Fixed loading of .zip files with more than 2 '.'s in the filename. Thanks to DCX for helping us troubleshoot this.
  • (Win32) Fixed up short filename saveram/save states loading when the long filename has spaces in it.
  • Added TCP/IP Support. It is recommended that for playable netplay, you'd have an average ping time of less than 300ms (type ping <ip address> in dos) and that packet loss is minimal for TCP/IP (not UDP). At the moment, you cannot have more than 2 connections. Thanks for all the testers for testing this, especially DooMStalK, GreenImp, and TeleKawaru! Also added back buffer support. This will sacrifice cpu power for netplay to make it much more playable. WARNING: High cpu speed recommendations (~450mhz+). Please see netplay.txt for details.
  • Added save states to netplay (just use them like you normally do)
  • Save Ram is now defaulted to load/save on the server's side Save Ram are not supported in SA-1/SuperFX games due to their size, but you can use save states instead in that case.
  • Increased chat line length in the out-of-game chatbox by a lot
  • Partly increased the chat line length in-game
  • in-game chat text now stays longer on-screen by 2 seconds
  • Added reset in netplay
  • Fixed up movie recording feature
  • (Win32) Mouse shouldn't get stuck on the left side anymore.
  • (Win32) Video mode 3 (256x224FS) shouldn't crash anymore. Thanks to kode54 for his assistance on the above 2 bugfixes.
  • (Win32) Fixed the instability bug where the window can sometimes start shaking for no reason and takes away windows resources.
  • (Win32) Re-wrote keyboard character input routines
  • Fixed up FF2(4)'s music in lower sampling rates
  • (Win32) Coded in the UDP protocol as a replacement for TCP/IP. Some network configurations won't work with UDP. However, it is strongly recommended that you use UDP if you can because of the speed increase. In order to disable UDP and use TCP/IP, both sides must de-select UDP.
  • (Win32) Added a small multiplayer game list (multi.txt)
  • Added an updated Windows FAQ, courtesy of TuxedoMsk of VGNetwork who updated it.
  • Added a more user friendly input selection routine (changed Direct Input to Keyb/Joystick and it also auto-sets keyb/Joystick when you set a key)
  • Hopefully fixed up the sprite priority problems (eg. FF2/4's damage points)
  • (Win32) Added rewind support for up to 8 levels (in 8 second intervals) (NOTE: Windows Port only! - Sorry DOS Port users). In order to activate this, assign a key to the Rewind Key in the Misc -> GameKeys option.
  • Note: Netplay plays really nice as long as the net connection is not unstable, both sides have a fast cpu (speed requirements depend on the game), and at least have a 28.8 connection.
  • *** PLEASE READ ZSNESW.TXT IF YOU ARE STILL HAVING PROBLEMS WITH THE WINDOWS PORT

v1.01 - September 9, 2000

  • Fixed a problem with offset per tile mode with MMX2 in the new 16bit engine
  • Fixed crashing problem in MMX2 (Win port)
  • Removed clock option (Win port)
  • Disabling the new graphics 16bit engine is now properly saved in the configuration files
  • Added the win port version number to the about box (Win port)
  • Fixed the % of execution problem in IPX/Modem modes (DOS port)

v1.000 - September 1, 2000 - First Windows Release

  • Implemented C4 emulation :
    • C4 Sprite structure -> OAM conversion routines
    • Sprite Rotate/Scale ability
    • Sprite disintegrate function
    • All in-game used math co-processor functions (hopefully)
    • Both wireframe modes
    • There are still some problems with C4 emulation, but I'd consider them to be quite minor to just leave them there.
    • Thanks to StarCreator for recording a bunch of movies off of the real snes for me to compare!
  • Tweaked ADSR a bit
  • Decreased envelope when key on is issued while sound is still playing. This fixed static/popping sound bugs that affected many games.
  • Added the ability to select the Add-on device (Snes Mouse/Super Scope) from the GUI through the Add-on option in the Config Menu
  • Added a hack to allow the mouse to control the cursor in Lethal Enforcers (Press '7' 4 times to activate or select it from the Add-on option in the Config Menu). Unfortunately, this method has problems (ie. mouse moves things that it shouldn't) but it should be good enough, especially for those who asked for this. I doubt this works in LE2, however.
  • Added a manual load entry box so that you can type in the filenames/directories manually or type in part of the filename and the GUI will seek to whichever filename contains or closely contains that part
  • Pharos coded a water effect, getting help from Scott Scriven's water effect code.
  • You can enable/disable the Water Effect and Snow Effect from the GUI Options (MISC Menu in the GUI)
  • Implemented Sprite Windowing to the new gfx 8bit engine. This completes all the features that I have planned for that engine.
  • Fixed a really nasty stereo bug that caused volume levels/pans to sound completely off on one of the speakers
  • Added player 5 as a normal player instead of just being available in modem/ipx play
  • Implemented an option to turn in-game messages/fps display to be transparent
  • Added a Set Keys feature to the Input Routines in the GUI that allows you to set all of the standard SNES keys all at once instead of clicking on the inputs separately to set them
  • Ported the new graphics 8bit engine to 16bit:
    • All the standard snes features from the 8bit engine
    • Works with all 16bit resolution modes/effects
    • Ported high resolution Mode 7
    • Added proper main/sub screen support and windowing support
    • Added all transparencies modes
    • Added Direct Color Mode7
    • 2xSaI and 50/75% scanlines can now co-exist with high resolution modes
    • This is now the default engine for 16bit. Some games won't work well with this engine such as some SuperFX games (eg. Stunt Race FX in the menus). You can switch back to the old graphics engine by pressing the '8' key.
    • Implemented a dual cache system in the tile modes. I don't know how much of a speed increase this gives since my system can already run the old graphics engine at full speed and framerate.
    • Full 15bit transparencies for MMX cpus only.
  • High Resolution Mode7 can be toggled on/off in the Video Options. It is disabled by default since this feature requires a fast CPU.
  • Added 48khz sound sampling rate
  • Tweaked VBlank timing a bit
  • Tweaked 65816 CPU cycle execution a bit
  • Added Kreed's Super 2xSaI engine. It's written in C, so it requires a really fast cpu to run it.
  • Added picture preview to the save states in the F3 window. Newly created save states will contain a small picture in them. Pictures will not appear in old save states, however.

v0.991 - May 24, 2000

  • Disabled 2xSaI/Super Eagle when in the GUI
  • Fixed up cheat code search (Got broken in v0.990 during port preparation)

v0.990 - May 24, 2000

  • Added speed hack for Kirby Super Star (US)
  • SPC700 (Sound cpu emulation) is now enabled by default whether sound is enabled or not. Emulation will now be slower than normal if you usually run with sound off, but the compatibility is higher. However, you can disable this through the options window in the GUI if speed is of your concern. Also, a few games only run with it disabled so this option may be useful in those cases.
  • Decreased cheat code description length by 1 since the last letter was causing some corruption to the next cheat code
  • Added an option to raise the pitch level to the pre-v0.989 pitch levels, mainly for non-Creative brand sound cards.
  • You can now change the sound settings (Enable Sound, Stereo, Sound Frequency) with immediate effects without re-starting ZSNES. However, there seems to be some problems with stereo switching on SB Live!'s.
  • Configuration is now saved whenever you exit the GUI instead of just exiting the program
  • Lots of port preparation done on the source.
  • Memory/Commandline fix on the C version. A version should not be needed anymore (hopefully)
  • The GUI is now using the standard in-game video blitter rather than it own.
  • Fixed up SnapShot key in 8bit mode
  • Implemented 4-point gaussian interpolation. This is the interpolation used by the actual snes! Many thanks goes to Neill Corlett for his work on finding this info! Of course, this routine takes up an extra cpu load so emulation will slow down a bit if your computer isn't fast enough, but you can always disable interpolation through the sound options.
  • Fixed up Pitch Modulation method. Thanks again, Neill!
  • Pitch modulation was modulating from the wrong channel. Fixed.
  • Tweaked SuperFX timing.
  • Added a move window feature to the F1 menu
  • Expanded filename length in the GUI display for long filenames by 3, but had to decrease the directory name by 2.
  • Added support for % codes in long filenames

v0.9891c/a - February 21, 2000

  • Slightly changed SB16 initialization
  • Forgot to remove DSP1 debug code
  • Fixed a pitch modulation bug when Voice 0 modulates Voice 1. Thanks to kode54 for this fix!

v0.989c/a - February 12, 2000

  • Fixed some SA-1 sudden slowdowns. This does slow down the overall emulation speed in SA-1 games though.
  • All sounds were being played at the wrong pitch (slightly higher than normal. It's now fixed so Zsnes should sound better now. Thanks to kode54 for helping out here!

v0.988c/a - December 6, 1999

  • Added some SA-1 speed hacks (Kirby DX/Parodius 3)
  • Implemented SDD-1 MMC. But none of the SDD-1 games run properly yet because of the compression chip.
  • Fixed up some slowdown problems in SA-1 games
  • Fixed up dirty CPUID fix for Cyrix CPUs so that you don't have to re-run Zsnes twice every time.

v0.987c/a - November 26, 1999

  • Forgot to re-enable pitch modulation after disabling it for debugging purposes.

v0.986c/a - November 23, 1999

  • Re-added Sound Buffering. I was hoping to re-write it, but later found out that it wasn't worth the trouble.
  • Fixed some Triple Buffering bugs, but I can't figure out that flicker glitch on NVidia cards
  • Added Simulated Triple Buffering for cards without VESA 3.0 Hardware triple buffering. This method does some lose frames, but should be faster than v-sync. This only works on VESA 2.0 modes.
  • Fixed up directory sorting to always put ./.. at the top.

v0.985c - November 15, 1999

  • Added some more speedups to the SA-1
  • SA-1: Fixed a branch problem with the BRL instruction
  • Implemented Save Ram support into netplay. Thanks to The Minder for help testing this!
  • Added a hack to get Mario Paint trainered rom with the trainer removed to work with the snes mouse instead of the keyboard/joystick
  • Prevented Joystick Keys/Buttons to be selected as the diagonal keys in the GUI
  • Fixed some crashing problems with the Modem Mode
  • Implemented a key combination editor in the GUI
  • Sped up V-Sync
  • Fixed an SA-1 memory map bug! Fixes DBZ:HD.
  • Added an small speed hack for DBZ:HD
  • Implemented SA-1 Super MMC
  • Finally, after many, many hours of hacking. Figured out what caused the odd noise sounds! So far, simulated noise is implemented since the true nature of how this noise is produced is unknown so it will sound somewhat off compared to the original sounds. There is also a slight chance that some sounds will become noise incorrectly and vice versa.
  • Fixed up Pitch Modulation
  • Fixed SNES Mouse/Super Scope support when Pl3/4 as Pl1/2 option is enabled
  • ADSR/GAIN overhaul (Sound DSP) :
    • Fixed several GAIN bugs
    • Implemented Increase Bentline/Decrease Exp GAIN modes properly
    • Rewrote Decay/Sustain modes in ADSR
    • Fixed a restarting ADSR bug
  • Removed Sound Buffering. I don't think it's worth losing the quality of the sound for a small amount of speed boost.
  • Implemented an option to disable the Noise Simulation for those games that aren't working properly because of it
  • Implemented Triple Buffering. You can enable this through the Video Options in the GUI. Unfortunately, Triple Buffering won't work with 2xSaI/Super Eagle engine at the moment since they rely on the previous screen for updating nor will it work properly with high resolution games in the old gfx engine. Thanks to GreenImp for patiently helping through testing!
  • Implemented Full Screen Interpolation. Only works on MMX CPU's at the moment.
  • Implemented Cheat Code Reflector (See Guinotes.txt for details)
  • Any proper VESA 2 error messages now doesn't exit the program when in the GUI but instead display the error message in a box and allows the user to continue.
  • Thanks to Daniel for lending me his copier which helped me hack the SNES Sound Noise/ADSR stuff!

v0.963c/a - September 19, 1999

  • NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version. Use v0.963c for those features. The only time when you should use this version is if v0.963c doesn't work for you.
  • Fixed DMA position reader to fix the high sample rate problem in SB-Live! cards. Thanks to ShihTzu for helping us with this!
  • Removed SB16 only message under stereo option in commandline help. Shouldn't really be there since v0.600.
  • Low Pass Filter is now disabled by default. But you can still enable it through the GUI.
  • Implemented an option in the GUI to not allow Zsnes to change the current start-up game path in the configuration. You can access this in Config->Options.
  • Joystick calibration values have been reset since there seems to be some problems with it. You may have to re-calibrate your joystick if it doesn't respond correctly.

v0.962c/a - September 18, 1999

  • Exit text now only displays when text mode is 80x25
  • Used hardware DMA counter to determine which sound block to write to rather than assuming it always starts at the first one for the sound routines. This should hopefully fix all those nasty sound static problems many people seems to have. Many thanks to Crono for the code and for his help!
  • Removed Re-Init Every 30 Second option. Shouldn't be needed anymore
  • Added the ability to disable the Low Pass Filter
  • Implemented Diagonal Keys
  • Implemented some SA-1 speedups

A Only:

  • NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version. Use v0.962c for those features. The only time when you should use this version is if v0.962c doesn't work for you.
  • All changes from v0.960c

v0.960c - September 17, 1999

  • Modified header reader a bit
  • DSP/SPC700: Modified EndX register usage to fix some compatibility
  • DSP/SPC700: Fixed up timing registers
  • DSP/SPC700: Fixed a sample looping bug causing many sounds to not sound correctly
  • SPC700: Fixed a small bug in TCALL. Not sure if it fixes anything
  • Added small optimisations to the MMX video copy routines
  • Fixed an adsr -> gain switching bug
  • Extended maximum number of cheat codes from 75 to 255
  • Altered .spc format again, this time to suit the ID666 format
  • Worked a bit on SDD-1 emulation. Don't think we can go any further since we can't seem to figure out the compression algorithm used in that chip.
  • DSP/SPC700: Added low-pass filter by kode54. Thanks kode54 for the code! This enhances bass in some games.
  • SA-1: Fixed memory map access problems with several stack instructions and d-page instructions
  • SA-1: Minor fix to the timing
  • SA-1: Fixed a load state problem which causes Zsnes to crash sometimes
  • SA-1: Fixed a small problem with the cpu communication register
  • SA-1: Added a small speed hack for Kirby 3
  • Added some transparency hacks (Kirby3, FF3)
  • Added an sram fix hack for Donkey Kong Country 2 trainer version
  • GUI now displays a message when SAVE CFG is selected
  • Added on-screen messages to the Background/Sound channel toggle keys
  • Added the missing video mode descriptions in the .cfg and commandline help

v0.953c/a - August 4, 1999

  • Echo should sound better now
  • Restored the old Sound Blaster routines since the new ones seems to create some static in certain computer configurations
  • Increased volume intensity of more quiet samples

C Only:

  • Fixed up crashing bug in pure dos when vesa 2 initialization failed
  • Included cwsdpmi.exe with the zsnes archive.

A Only:

  • NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
  • Fixed a small H+V IRQ timing problem
  • Fixed some vertical off by 1 line bugs
  • Attempting to save over read-only files shouldn't mess up anymore
  • Start with newest save option now works with the save directory defined
  • Fixed up a crashing bug when a read only file is loaded
  • The volume level didn't modify the echo volume. Now fixed.
  • Fixed up a display problem in the F1 menu in 256 color mode
  • Fixed an echo delay bug
  • Hopefully fixed the random beep encounter bug that occurs in some games with sound enabled
  • Several sound volume fixes
  • Fixed Save Snapshot + Increment frame enter key affecting the game bug
  • Added Increment Frame Only option to the F1 menu
  • Made some minor changes to the Sound Blaster routines
  • Fixed some more sync bugs in .ZMV recording
  • Fixed a speed hack bug that occurred from v0.800 to v0.900. Hopefully the speed is better now.
  • Slightly improved the sound skipper when sound is disabled
  • You can now quickly modify the currently selected cheat code's value by typing a 2 digit hex number in the cheat code enter space
  • Added a hack to Chrono Trigger to prevent the screen from flashing before battles
  • Fixed a 16-bit mode 7 windowing distortion/crashing bug
  • Fixed a read memory leak bug in the 16-bit old gfx engine. Interesting that this bug plagued ZSNES all this time, but its effects didn't show until the recent versions.

v0.952c - August 3, 1999

  • Fixed a small H+V IRQ timing problem
  • Fixed the bug which caused HiROM games from not loading properly through the commandline
  • Fixed some vertical off by 1 line bugs
  • Attempting to save over read-only files shouldn't mess up anymore

v0.951c - August 3, 1999

  • Fixed up the directory changing bugs that plagued v0.950
  • Start with newest save option now works with the save directory defined
  • Fixed up a crashing bug when a read only file is loaded
  • The volume level didn't modify the echo volume. Now fixed.

v0.950c - August 2, 1999

  • Fixed up a pretty nasty .ZIP support bug where .ZIP files from the root directory weren't loaded up properly
  • Fixed up a display problem in the F1 menu in 256 color mode
  • Fixed an echo delay bug
  • Hopefully fixed the random beep encounter bug that occurs in some games with sound enabled
  • Several sound volume fixes
  • Sorry about those new problems in v0.941c. We traced some of the problems to the dos extender zsnes was using (thanks Maxim- for some help on this!) so we spent some time rewritng the file system so that it would be compatible with other extenders in pure dos.
  • Fixed Save Snapshot + Increment frame enter key affecting the game bug
  • Added Increment Frame Only option to the F1 menu
  • Made some minor changes to the Sound Blaster routines
  • Fixed some more sync bugs in .ZMV recording
  • Fixed a speed hack bug that occurred from v0.800 to v0.900. Hopefully the speed is better now.
  • Slightly improved the sound skipper when sound is disabled
  • You can now quickly modify the currently selected cheat code's value by typing a 2 digit hex number in the cheat code enter space
  • Added a hack to Chrono Trigger to prevent the screen from flashing before battles
  • Fixed a 16-bit mode 7 windowing distortion/crashing bug
  • Fixed a read memory leak bug in the 16-bit old gfx engine. Interesting that this bug plagued ZSNES all this time, but its effects didn't show until the recent versions.

v0.941c/a - July 18, 1999

  • Fixed a small newly created timing bug
  • Fixed flicker bug in 320x480x65536 video mode during high snes resolution mode

v0.940c/a - July 18, 1999

  • Fixed a major SuperFX bug! Starfox and other SuperFX games now show polygons! Note that the SuperFX still has bugs.
  • Fixed an offset per tile mode bug
  • Optimised SuperFX plot instruction.
  • Implemented a hack to get Winter Gold working. Thanks to Gary Henderson for this fix!
  • Fixed a flag setting bug in the XCE instruction (65816).
  • Fixed another HIRQ bug
  • Seems like a sprite cache bug that was fixed in v0.800 re-appeared in v0.900. Fixed now.
  • Fixed an SA-1 arithmetic calculation result timing bug
  • Forced the old gfx engine on when running Stunt Race FX since the new gfx engine was having lots of problems in 256 color mode
  • Fixed a new gfx 8bit engine mosaic crashing bug with certain games
  • Fixed a sprite cache bug in the new gfx engine
  • Fixed a DSP envelope bug which was causing some games to not work
  • WRAM data is now cleared by 0xFF
  • Fixed 320x480x16bit mode when switching from a 256 color mode

v0.915c/a - July 7, 1999

  • NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
  • Skipped scanline length check/set in VESA 1.2 routines
  • Fixed a 256 color mode 7 slowdown bug that occurred in v0.910c
  • Added hi-res mode 7 hack to 320x480x256 video mode
  • Implemented 2xSaI engine for ARGB cards. Thanks to Kreed for the updated source!
  • 2xSaI was missing a couple lines at the bottom. Now fixed
  • A: 320x480 modes can now be selected in the GUI
  • properly cleared 320x480x256 video mode
  • F3 menu should now be correct during hi-res mode 7

v0.910c/a - July 6, 1999

  • NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
  • The bug where enabling auto-cheat load, having an Sram directory, and loading a rom without a .cht file which results in Zsnes changing the loading directory to the sram directory is fixed.
  • A: Fixed cheat search engine
  • Tweaked HIRQ timing to fix some flickering in some games
  • Fixed screen shot capture in ARGB cards in 640x480x65536 mode with scanlines enabled
  • Implemented adjustable time interval for the sound reinitialization feature so that it can be set to values other than 30 seconds. It can be modified in zsnes.cfg (ReInitTime)
  • Cheat Search 'Add' button now works properly
  • Corrected Register 4212h to adjust to the new NMI timing
  • Implemented ARGB video mode support to VESA 1.2
  • Implemented 320x480x256 and 320x480x65536 video modes
  • Fixed a x448 resolution bug when scanlines are enabled
  • Prevented those with ARGB videocards from checking 2xSaI or Super Eagle engine for now

v0.900c/a - July 4, 1999

  • NOTE : You cannot run DSP1 games, use IPX support, or use .ZIP files in the assembly only version
  • Fixed another sprite priority bug
  • A: Fixed an IRQ problem that was caused during the C -> ASM conversion
  • HBlank is supposed to be noticed during VBlank
  • Fixed an IRQ bug that occured between v0.715 and v0.800
  • Fixed a 65816 DPage usage bug that occured between v0.715 and v0.800
  • Rewrote 65816 flag handling system.
  • Optimised SA-1 emulation
  • Optimised the 65816 main loop.
  • Implemented Surround Sound. It is defaulted off since it seems to create some bad static in some games. Thanks to Crono for info!
  • Wrote Interpolation in MMX. MMX cpu is required.
  • Implemented MMX auto-detection for MMX Interpolation and MMX Copy.
  • Fixed an 224HDMA line bug, thanks to Gary Henderson!
  • Optimised 320x240x16b and 640x480x16b for ARGB cards.
  • Removed Snow
  • Clock option is now visible to anyone. You can enable the in-game clock through the GUI in Config->Options.
  • Altered method of writing to file in Movie Recording mode, hoping that it will fix some problems after recording movies for a long period of time.
  • Altered data alignment size in source
  • Fixed a VESA2 divide by 0 bug in Banshee cards by checking the scanline length instead of setting it immediately. Thanks to Crono for some help!
  • Altered sound echo volume
  • Added sound interpolation based on Crono's code. Thanks to Crono for his help!
  • Added an option to turn off sound interpolation for speed
  • Implemented Pitch Modulation, thanks goes to Gary Henderson for clarification info!
  • Implemented an option in the GUI (Config->Options) to allow the Fast Forward key to act as a toggle (disabled by default)
  • Fixed a bug that prevented high resolution to sometimes not display in a 16bit video mode
  • Fixed a game stalling bug when pressing F3 during games that are sensitive to changes in the ENVX DSP register (Bomberman Series)
  • Added a hack for the graphic glitches in Dragon Quest 6
  • Fixed up in-game clock in the new gfx 16bit engine
  • Fixed a nasty bug in the ADSR engine. It was sometimes using an incorrect decay value, causing the sound to stick instead of fading out
  • Slightly fixed ADSR by completely skipping the attack stage when the attack duration is 0
  • Fixed a GAIN decrease->increase bug
  • Implemented a safe recovery feature for those computers that don't support the CPUID instruction (used for MMX detection). If ZSNES crashes at the very start, just re-run it.
  • Fixed a fixed color dual windowing bug in the subscreen which caused transparency to sometimes shift unexpectedly when the background scrolls
  • Implemented 50% Scanlines (Lance McKay's idea) and 25% Scanlines (Similar to Snes9x TV-Mode's scanline intensity) in 640x480x65536 video mode. These modes don't work on videocards with an ARGB setting yet.
  • Added MMX Support to 50% and 25% Scanlines modes
  • Implemented back buffer clear in MMX
  • .CHT files now saves to the proper save directory
  • Implemented the 2xSaI graphics engine (MMX Only). Many thanks to Kreed for this wonderful engine and source code!
  • Implemented Kreed's Super Eagle engine. Note that for both 2xSaI and Super Eagle, you need an MMX processor, enough RAM for the new gfx 16bit engine, and also be in 640x480x65536 video mode.
  • Implemented an option to auto-load a .cht file whenever a game is loaded. You can find this option at the bottom of the Cheat Window in the GUI.
  • Optimised Non-MMX Interpolation
  • Fixed a bug that caused save states to not save correctly after attempting to load a non-existing .cht file
  • Added a Quick SnapShot Key. You can set this key in the Misc -> GameKeys menu in the GUI. This key allows you to take a snapshot with just a press of a key.
  • C: Implemented .ZIP support. Thanks to Jean-loup Gailly, Mark Adler, and Gilles Vollant for the ZIP routines!
  • Fixed a bug where pressing PageUp/PageDown in the cheat window went over by 3 entries.
  • Implemented longer cheat descriptions. The cheat window and the .cht file format had to change a bit, however, ZSNES automatically converts any old formats to the new formats when it detects it.
  • Allowed the IRQ to be executed more than once on the same line through HIRQ. Fixes the flickering problems of Doom/Offroad Baja.
  • NMI now executes at line 225 instead of 224.
  • Saving/Loading the state causing the control to stop or skip has been fixed again.
  • C: .ZIP files can now be run from the commandline
  • Implemented an option for ZSNES to automatically save the save data approx. 5 seconds after it detects writes to it. This will not work for SuperFX or SA-1 special chip games, however. This option is disabled by default and can be enabled through the option window.
  • Implemented an option in the sound window to re-initialize the sound card after every 25-30 seconds. Hopefully fixes the problems where the sound gets staticy after a certain amount of time.
  • Newest Save Slot will now appear as orange in the Save State Select (F3) window
  • Fixed a spc700 <-> 65816 sync bug during movie (.ZMV) playback
  • Implemented an option to enable Old Gfx Engine Mode 2 (Accessible through the options window in the GUI). This mode fixes many transparency problems in 16bit modes, but can also create some and is also at times slower than the original engine.
  • Implemented 640x480x65536 VESA 1.2 support. Currently supports Full Scanlines and Smallscreen modes. However, it is strongly recommended that you only use VESA 1.2 support if your card cannot support VESA 2.0 (w/ linear framebuffer) since VESA 1.2 runs slower.
  • Implemented an option to disable Pitch Modulation
  • Sound card is now not re-initialized whenever a state is saved/loaded since some sound cards seems to have problems with it.
  • Implemented Single Windowing in the New Gfx 8bit engine, 8x8 and 16x16 tile modes only
  • Fixed 64k SRAM support when loaded from the GUI
  • Optimised high resolution new gfx modes in 640x480x256
  • Fixed the graphic glitches in x488 snes vertical resolution modes in 640x480x256 new gfx mode
  • Optimised 640x480x256 Eagle Engine
  • Fixed the GUI background display bug in the new gfx engine
  • Fixed .SPC capture in the new gfx engine
  • Added an option to start with the newest save state when the game is loaded. It can be enabled in Config->Options window in the GUI
  • Slightly optimised new gfx 8bit engine
  • Fixed several Mode 7 problems in the New Gfx 8bit engine
  • Changed DSP1 variables to use double instead of floats for a small speed increase. Thanks to Gary Henderson for this tip!
  • Fixed up the Mode 7 slowdown bug when the scale ratio becomes small in most graphics modes
  • Optimised some Mode 7 transparency modes
  • Implemented EXTBG mode 7 into the newgfx 8bit engine
  • Fixed the 'FIX' feature in the cheat menu. Seems like it wasn't writing any value to memory when it was clicked.
  • Game Genie codes are now defaulted to the 'FIX'ed mode. Seems like most of the codes needs this.
  • Implemented windowing to Mode 7, New Gfx Engine 8bit
  • Added support for .SPC v0.2 format
  • Added an option in zsnes.cfg to disable configuration saving for those who want to store zsnes.exe in a read-only storage area
  • Fixed GameKeys display in the GUI for certain keys (such as the snes parallel adapter keys)
  • Implemented hi-res mode 7 (vertical expand only). Currently only works in 640x480x256 newgfx engine (w/ Eagle and Scanlines disabled).
  • Fixed an offset per tile mode bug in the new gfx 8bit engine
  • Implemented dual windowing modes into the new gfx 8bit engine
  • New Gfx 8bit engine is now the default graphics engine in 256 color modes. It still lacks sprite windowing and also has some sprite flicker issues, but it's overall more stable, faster, and has more features. You can still switch back to the old gfx engine by pressing '8'.
  • Looks like Pitch Modulation was causing more sound problems than what it's worth. It's now disabled by default, but you can reenable it through the GUI.
  • Added auto save/load state feature where ZSNES will automatically loads back the previous state when you last properly exited ZSNES. This feature is disabled by default.
  • Compressed the executable using UPX

v0.800a - December 25, 1998

  • Assembly only version.
  • Doesn't support DSP1 chip or IPX.
  • May fix problems that some people are having with sound.
  • NOTE : Only use this if have problems with 0.800c.

v0.800c - December 24, 1998

  • Fixed up sound speeds. Timers were computed incorrectly.
  • Fixed a sprite priority bug
  • Fixed up a bug that prevented the gui to be disabled
  • Fixed up SPC capture
  • Fixed a bug when VIRQ is set on the same scanline as NMI
  • Implemented an automatic .IPS patcher. Just rename your .IPS file to the rom filename with the .IPS extension and ZSNES will patch the rom realtime without modifying the rom file's contents. Thanks to Neill Corlett for most of the .IPS info!
  • Snapshot capture/skip 2 frames option now returns back to the proper menu item
  • Fixed a calibration bug with 6/8button joysticks
  • Fixed up display in 640x480x8 new gfx engine
  • Fixed up hi resolution displays in all 640x480x8b modes
  • Fixed up a bug where Mode 7 becomes corrupt after selecting Save CFG from the GUI
  • Fixed a memory map bug in lorom DSP1 games
  • Fixed a potential DSP1 crashing bug where a negative value is being square rooted
  • Hopefully fixed the modem bug when using an IRQ that is bigger than 7
  • Fixed up an ADSR bug for games that changes ADSR mid-sample
  • Fixed up echo emulation (possibly slowed down emulation)
  • Fixed up a sprite caching bug
  • Fixed up a DSP1 byte check stall bug
  • Implemented a commandline to disable spc700 speed hacks (-7). Might help with some compatibility
  • Implemented SA-1 support (most functions emulated)! Unfortunately, it's still buggy. Thanks to the snes9x team for providing info!
  • Fixed a bug when selecting drive A/B while a disk is not in the drive caused a long check sequence
  • Implemented Keyboard support to most of Option, Sound, and GUI Option configurations in the GUI
  • Changed sound init code a bit. Hopefully improves sound card compatibility, but might also ruin it.
  • Implemented off by 1 line fix (-9). This may help compatibility and fix some minor graphic glitches, but may also ruin some too.

v0.715 - October 29, 1998

  • Fixed a crashing bug when 16bit back window clipping was using an undefined windowing clip buffer
  • Added spc program counter check to the spc stall detection to reduce false alarms
  • Tweaked IRQ processing a bit
  • ZSNES.CFG and ZGUICFG.DAT are now fixed so that they will use the current directory when the SET CMDLINE detection fails
  • Fixed several mode 7 bugs in the new graphic engines
  • Implemented an option to save the configuration files in the MISC menu
  • Added a shadow to the in-game text displays
  • Fixed a bug created in v0.700 where pressing F3 while sound is disabled crashes zsnes
  • Fixed up player 4 and player 5 so they now work again
  • Fixed up color a bit in the old graphics 16bit engine
  • Added gamma control to 16bit old graphics engine
  • Fixed a cheat code bug where pressing the down key in the browser overflows by 3 rows
  • Fixed up a bug where any memory allocation below 48mbit support crashes
  • Added out of memory error when loading a file from the gui
  • Fixed a minor off by 1 pixel windowing bug
  • Fixed up memory requirements in the readme.txt. It seems like compiling with C takes up 3.0 more megs. It shouldn't though. An asm only version will be release later without dsp1/ipx support unless the reason is figured out.

NOTE : It seems like IPX mode randomly loses packets in certain configurations so IPX isn't recommended to use yet.

v0.700 - October 26, 1998

  • Fixed another offset per tile mode bug
  • Fixed up joystick button update rate
  • Fixed a bug that caused sound buffer dump option to crash
  • Fixed a minor sound initialization bug
  • ZSNES now compiles with C code!
  • Fully rewritten commandline parser routines
  • Partially rewritten SET BLASTER/SET CMDLINE detection
  • Implemented partial DSP1 support. Seems to have some precision problems. Thanks to the snes9x team for the info!
  • Fixed a mode 7 nonrepeat mode off by 1 tile bug
  • Implemented snapshot/increment by 2 frame feature in the F1 menu for those interested in producing animations
  • Added variable sound buffer size to reduce static in higher sampling rates
  • Changed method of reading the mouse cursor position in the GUI. Hopefully, this fixes those mouse crash problems when zsnes is run in pure dos and sometimes win95.
  • Added a commandline to disable palette 0 (back color) modification in 256 color modes
  • Implemented Turbo Buttons for buttons A,B,X, and Y. Use the GUI to define those keys
  • Added the ability to toggle Turbo Change speed to 30hz instead of 60hz in the Options menu.
  • Started C4 chip emulation. Nothing is playable yet.
  • Fixed up SET CMDLINE detection. Hopefully, zsnes.cfg and zguicfg.dat will now end up in the correct directory.
  • Started Modem Support (direct modem to modem). DOS-Compatible modem required! Thanks to Dark Force for helping out on getting a bug that kept USR's and other modems from working! Also thanks to The Minder for a lot of help testing! Note : Modem mode isn't free of bugs.
  • Added in-game chat key to the GUI keys for modem/net support. Currently defaulted to 't'
  • Forgot to add EMMS after any MMX routines that seems to cause any FPU instructions to crash
  • Fixed an interrupt re-enable bug in the Gamepad Pro code which seems to have eliminated the locking bugs when it's not set on GrIP mode
  • Implemented keys to adjust Frame Rate up or down during gameplay. You can define them through the GUI under Gamekeys.
  • Implemented keys to slide the volume level up or down during gameplay
  • Fixed a small HDMA screw up bug when using Save/Load states which caused the screen to flicker once in many games
  • Finally fix up 48mbit mapper support! Many thanks to Dark Force, Mike Gilroy, and Frank Hughes for a lot of help on this!
  • Several fixes to register 4211h
  • Rewrote IRQ timing handler (not perfect, but better)
  • Implemented Fossil Driver support to the modem support.
  • Fixed an IRQ reenable bug
  • Increased default cycles a bit
  • Fixed some major mode 7 rotation bugs
  • Added support for uninterleaved 48mbit roms
  • Added a FIX option to the cheat code to correct incorrectly converted codes
  • Implemented Mode 7 horizontal flip
  • Implemented primitive IPX support. It is very primitive at the moment and may not work since it isn't really tested much.
  • Optimised some 65816 direct page addressing modes

NOTE : .ZMV (Movie) files recorded under v0.635 has good potential on becoming obsolete in this version because of the timing changes

NOTE : IPX support and Modem support may be buggy since it hasn't been tested on multiple types of connections yet.

v0.635 - September 24, 1998

  • Sidewinder fix options are now swapped since the majority seems to work better with the other sidewinder routine.
  • Implemented EXTBG mode7 in 256 color old graphics engine.
  • Fixed a DSP Sound bug where some sound effects weren't played in certain games
  • Tweaked joystick routines again
  • Fixed up a bug where sometimes loading a game after playing another game screws up emulation
  • Optimised 640x480x8, 512x384x8, and 512x384x16 video modes
  • Implemented EXTBG mode7 in 65536 color old graphics engine.
  • Fixed an offset per tile mode range clipping bug
  • Fixed up offset per tile mode in new gfx 8bit engine
  • Fixed a bug which caused a crash when a state is loaded while playing/recording a movie file
  • Optimised new gfx 16bit non-transparency mode
  • Implemented SPC700 stall detection/recovery attempt
  • Fixed up a new header detection bug in v0.625
  • Modified memory allocation routines. Hope this fixes those random crash problems that some people seem to have
  • Fixed a sound bug where the song leaks after it ends, sometimes producing an unwanted beep
  • Optimised new gfx 16bit transparency modes
  • Multiple DSP sound bug fixes
  • Implemented transparencies in high res 16x8 tiles
  • Implemented a command line to disable the sound DSP (-dd). Use -s and -dd if you want spc700 emulation to be enabled without sound to improve compatibility
  • Fixed a bug where joystick support makes the emulation slow
  • Had to remove some memory allocated variables and convert them to arrays since they were causing random crashes on specific computers.
  • Fixed up pressing save state/load state in game so that it doesn't clear any key presses

v0.625 - September 18, 1998

  • Fixed up a major speed drop bug by just adding some empty space. Most likely a cache/alignment problem.
  • Used an older version of wdosx because the new version sometimes crashes during compiling
  • Executable is now uncompressed. It's 3 megs, but it provides a much faster start up time.
  • Seems like EPACK can only support a maximum of 6 commandlines. Fixed after executable is decompressed
  • Fixed a bug where buttons 7 and 8 of 8 button joystick support sticks once pressed
  • Swapped button 5/6 and 7/8 in the default joystick configuration for 8 button joysticks
  • It seems like 16bit HDMA > 5 was causing problems with some sound cards. It now reroutes back to 8bit DMA like how v0.400 did it.
  • Implemented a new offset per tile mode engine into the old graphics engine (mostly transferred from 8bit newgfx engine)
  • Implemented Horizontal offset per tile mode in both 8bit and 16 bit old graphics engine (Mode2/8x8 only)
  • Implemented Horizontal offset per tile mode in 8bit new graphics engine (Mode2/8x8 only)
  • Tweaked sidewinder routines. Hopefully, this will help those who have troubles using sidewinder support
  • For those with sidewinder pads who has troubles with the tweaked routines, a 'Sidewinder Fix' option in the GUI is added in the Config/Options menu
  • Commandline -i now uninterleaves an incorrectly interleaved rom
  • Tweaked GamePad Pro routines. Not exactly sure if this will help those with 2 GPP joysticks though
  • Fixed up sticky buttons in the GUI cheat menu when no cheat codes are present
  • Fixed a bug where using -1 and -2 in the commandlines didn't activate the joystick movement/buttons
  • Fixed an offset per tile mode wrapping bug
  • ZSNES will now not crash when zsnes.cfg and zguicfg.dat are write protected files
  • Fixed up the GUI when 239 y resolution is used in the game
  • Optimised some minor mode 7 routines
  • SNES Header display in the GUI now displays the filename for blank headers. This will fail for headers with garbled header names
  • Inserted an extra reminder in the cheat menu
  • Implemented 239 y-resolution support for .PCX snapshots
  • Implemented 239 y-resolution support for .BMP snapshots
  • Added multiple .SPC saves (Up to 10 saves only)
  • Save State Selection Menu (default F3) now highlights used state boxes in red
  • Tweaked 2player/6button/8button joystick routines a bit
  • Fixed a cheat code bug where pressing TAB adds an extra character at the end of the address
  • Removed the blank line from the .PCX and .BMP snapshots
  • Implemented Joystick Calibration for non digital joysticks
  • Fixed a bug where parallel port LPT2 player 2 wasn't selectable in v0.605
  • Stabilized the joystick code a bit
  • Fixed up a cheat code bug where using a PAR code that accesses RAM doesn't freeze when the .cht file is loaded
  • Added a small delay to play a note when a key on is issued from the sound DSP. Not sure if this fixes anything though
  • Fixed some sound compatibility problems when RESET is used
  • Implemented Movie Record/Playback support. Read GUINotes.txt for details.
  • Added a small detection for long filenames and prevented users from selecting it when it isn't detected
  • Fixed a bug where max frame skip didn't save
  • Fix a timing bug where running a game off the gui ran 1 less line in the 65816 than running off the commandline
  • Implemented FPS at start option in the Config/Options menu
  • Fixed a bug in the newgfx16bit engine where 8bpp tiles displayed incorrectly
  • Reduced the filesize by 1200k through many changes in the code (filesize is now 2.0 megs)
  • Fixed some VIRQ bugs that caused certain games to crash
  • Added DMA area execution for IRET
  • Added a 'Bugs Section' in the readme.txt
  • Show all extensions is now disabled when snes header view is selected in the GUI
  • Implemented partial Direct Color mode in Mode 7 (no transparencies yet, only works in 16bit old gfx engine)
  • Improved header detection a bit
  • Fixed up a sprite bug in games which changes the address in the middle of the screen

v0.605 - September 10, 1998

  • Fixed up a FPS display bug when switching between auto frame rate and manual frame rate in the GUI
  • Cheat Codes can now be toggled ON/OFF by double clicking on them
  • Tab key now switches from the Cheat Code enter box to the Description box
  • Fixed a Save State/Load State bug in the menu where it saved in the load directory instead of the save directory
  • Implemented 8button joystick support (Not tested)
  • Implemented an option in the .cfg file to enable reversed stereo sound (ReverseStereo)
  • Implemented an option in the .cfg file to share Player 1 and Player 2 controls with Player 3 and Player 4's controls. This option allows you to use 2 devices (Joystick and Keyboard) for both player 1 and player 2, but this also disables MultiTap support. (Pl34to12Share)
  • Added Reverse Stereo to the GUI under config/sound
  • Added Player 3, Player 4 to use as Player 1, Player 2 in the GUI under config/options
  • Compiled under a new version of wdosx. Hope this doesn't cause any problems

v0.601 - September 9, 1998

  • Fixed up a sound card deinit bug that sometimes caused ZSNES to crash in certain sound cards
  • Disabled Autoinit mode when a low sampling rate is used in 8bit sound. Probabily was also causing problems in some cards

Note : The offset per tile mode in the 16bit oldgfx engine seems to randomly crash sometimes for an unknown reason. If 16bit mode crashes for you and 8bit doesn't, press the '0' key in 16bit mode to disable that mode.

v0.600 - September 9, 1998

*** ADDED A NEW MEMBER TO THE ZSNES TEAM! ***

Welcome Pharos to the team, his role is currently a coding assitant. So far, he helped us objectize the zsnes source code which greatly helped in the compile time, provided assembly help, and helped us prepare on linking C code to zsnes (not completely there yet).

Note : It is strongly recommended to not use the 16-bit new graphics engine yet because of bugs and speed concerns. It is enabled only in 320x240x65536 for those who are interested.

  • Added partial 65816 execution in the DMA registers (doesn't seem to fix mucht due to some other problem) Thanks to Alucard for this info! This also slowed down emulation a bit.
  • Implemented sprite priority correction into the new graphics engine
  • Implemented mosaic into the new graphics engine
  • Implemented true 512 horizontal resolution into new graphics engine (both 16x8 and 16x16 tile modes)
  • Implemented interlaced 448 vertical resolution into new graphics engine
  • Implemented offset per tile mode into the new graphics engine (Mode 2/Vertical only). More accurate compared to the old graphics engine. (seems to be a bug where the game gets very slow sometimes though)
  • Started 16-bit new graphics engine
  • Implemented sprite priority correction in 16bit new gfx engine
  • Implemented palette raster effects in 16bit new gfx engine
  • Fixed a minor bg enable/disable bug in the new gfx engine
  • Multiple SPC700 bug fixes. More games run now!
  • Implemented SPCPlay sound engine into zsnes :
    • Echo & FIR Filter Support (Slowed down emulation, but gives better sound) Thanks to feenix65 for info on FIR Filter!
    • Volume fixes
    • Rewrote ADSR/GAIN engine
    • Added Adjustable Volume through the commandline and zsnes.cfg
    • 16000 and 32000 extra sampling rates
    • Many other bug fixes
  • Fixed a minor HDMA bug
  • Fixed an old style joystick read bug that prevented the joypad from functioning in certain games
  • Several optimisations on Echo & FIR Filter
  • Several Sound DSP Fixes
  • Temporarily fixed a V-latch bug in some games that don't update the display at every frame
  • Add/Removed some game hacks for compatibility
  • Modified Song Start Search in .spc capture. Should be much better now.
  • Fixed a sprite window clipping bug where it was used when it's not supposed to be.
  • Modified memory allocation technique in zsnes. This should now eliminate some random crash errors. Thanks to Y0SHi for this info!
  • -c now does full screen instead of small screen in 640x480 modes. For small screen, use -cc
  • Fixed a back area 1/2 addition bug which caused the background to be sometimes darker than usual
  • Fixed a mode 7 transparency bug
  • Added 8-bit stereo sound and 8-bit sound high speed mode support (high speed mode support is just the implementation of 8bit 44100khz or 22050khz stereo) Thanks to Crono for a lot of help on this!
  • Fixed up sound blaster deinit code. Thanks again to Crono!
  • Wrote an entirely new GUI :
    • Mouse driven GUI/Menu Based
    • Full Keyboard Support in all the Quick (Arrow Menu), Load, and Cheat menu items
    • Ability to display load names under 8.3 filename format, snes header name, and win95 long filenames
    • Support for Save State, Load State, and Select State through menu items
    • Quick Load Menu (Arrow menu) which allows you to quickly load the last 10 games loaded
    • Ability to Freeze or Clear the Quick Load Menu
    • An Options menu which allows you to configure settings such as video mode, sound settings, frame skip, etc.
    • Added the ability to customize the game keys such as the save state key, misc toggles, etc.
    • Ability to use those keys as joystick buttons
    • Customizeable background palette displacement
    • Several minor GUI customization features
    • Ability to quickly exit/enter the GUI with the right mouse button (Disabled by default)
    • Ability to Enter Game Genie, Pro Action Replay, or Game Finger Cheat Codes
    • Ability to browse the cheat codes and Toggle or Remove the codes
    • Ability to Save/Load Cheat Codes (saves them as .CHT files in the same directory as the .SRM/.ZST files)
    • Ability to Select Input Devices for each joypad
    • Ability to Define Keys/Button configuration for each joypad
    • Joypad can now move in the GUI (disabled by default)
    • Added some future reserve menus (Netplay, Cheat Search Engine). But they are NOT implemented in zsnes yet.
  • Fixed a bug when clearing the screen in 640x480x65536
  • Implemented full add, half add, full subtract, and half subtract into the new 16bit graphics engine. Not sure why, but some transparency modes are actually slower than the old engine. Most likely flushing the cache a lot somewhere.
  • Implemented background transparencies into new 16bit graphics engine (implemented incorrectly at the moment. Some transparency modes also is slower than the old graphics engine, but that will change in the future)
  • Implemented fixed color transparencies (very incorrect because of lack of windowing)
  • Fixed a minor bug in the fast forward routines
  • Rewrote most of the 65816 speed hack. It should now be a lot more friendly with games (reduced graphic glitches/increased compatibility).
  • Fixed a bug in Mode7 with Windowing and Transparency enabled
  • Allowed 16bit HDMA sound blaster values less than 5 to be used. Not exactly sure if this works though.
  • Implemented Mouse Disable Command Line (-j)
  • Rewrote Input Device Routines (Keyboard, Joystick, SNES Mouse, and Super Scope Handlers)
  • Added GamePad Pro Support (Don't know if it works on a standard GrIP system though). Thanks to Marius Fodor for the code!
  • Added Snes Parallel Port Support for both LPT1 and LPT2. Thanks to Karl for the code!
  • Added MultiTap (Multiplayer 5) Support! (Only up to 4 players at the moment though)
  • Joystick Port 209h support
  • Fixed an overflow caching bug in the new gfx engine where a few games run very slow
  • Added some C -> ASM converted DSP1 functions. Some functions were unable to convert properly so no DSP1 games are playable until the actual C code is in
  • Executable is now compressed using epack
  • Implemented sprite transparency into the 16-bit new graphics engine
  • Implemented mode7 transparency into the 16-bit new graphics engine
  • Higher memory requirements (Sorry, but this is unavoidable as long as ZSNES keeps expanding)
  • Implemented Echo Disable in the zsnes.cfg for those who want some extra speed in return for lost sound quality
  • A bunch of other fixes that we forgot to list

v0.400 - May 19, 1998

  • Fixed a dual windowing bug in mode 7 in 65536 color mode
  • Re-added FPU Copy due to a demand
  • Implemented MMX Copy. Use -om to enable. Thanks to Angels Holocaust for this info!
  • Fixed a bug when writing to .bmp files
  • Added (buggy) SuperFX support (9.5MB memory required). Special thanks to the snes9x team for all the info and help!
  • Fixed up sprite windowing. Should hopefully be correct now
  • Added a commandline to show all file extensions through the GUI. Use -sa to enable.
  • Added Noise to the Sound DSP
  • Added a Fast Forward key. Use the Tilde Key (~) located at the top-left of your keyboard.
  • Added Sprite Priority Correction
  • Fixed a tile caching bug that caused some tile corruption
  • Fixed a 65816 bug in XCE on the x flag. Thanks to ]SiMKiN[ for this!
  • Implemented Interleaved format and a simple auto detection. In case autodetect fails, use -i. Thanks to feenix65 for this info!
  • Improved header detection. Should now work better with demos and games with weird filesizes
  • Added a new graphics engine in 256 color mode. It should be much faster in areas that don't use mode 7, but lacks a lot of features such as windowing, mosaic, and sprite priorities so it is disabled by default. It can be enabled by pressing 8 during gameplay. (~40-100% faster)
  • Optimised Mode 7 in 256 color mode
  • Implemented dual windowing to color window clipping
  • Fixed several color window clipping bugs
  • Added full resolution screenshot capture in 640x480x65536 mode. To activate while in that mode, hold backspace and press F1
  • Fixed several transparency bugs
  • Added NewGfx to zsnes.cfg which determines if the new graphics engine is enabled at start
  • Added CopyMethod to zsnes.cfg which can default the copy method as either fpu copy or mmx copy
  • Allowed systems with 5.5MB of RAM free to load 2mbit roms
  • Fixed sidewinder support when sound is set at a high sampling rate. Thanks to Marius Fodor for the source!

v0.393 - April 15, 1998

  • Whoops! Forgot to remove the debug variables in v0.391
  • Fixed another sprite clipping bug
  • Fixed clipping in Mode7 16-bit mode
  • Removed FPU Copy since it didn't seem to speed up emulation
  • Added .USA and .JAP rom extension into the GUI
  • Added Save SPC Data which saves the contents of the SPC700/DSP of the beginning of the next song (Future Reserved)
  • Add Sound Buffer Dump which dumps the decompressed sound buffer as raw pcm. This can become quite inaccurate due to the way how zsnes stores its decompressed sounds.
  • Added MenuItem Sound Buffer Dump into the F1 Menu
  • Added MenuItem Save SPC Data into the F1 Menu
  • Added a key to disable offset mode. Press 0 key to activate/deactivate
  • Added small screen support in 640x480VESA2 modes. This mode should be much faster for those who use 640x480. Use the -c commandline to enable this when in 640x480.
  • Added an option for centered small screen. Use the -cc commandline.
  • Fixed up 320x240x65536 support for ARGB cards again. It now should be working. (No, seriously!)
  • Removed some static from the sound.

v0.391 - April 13, 1998

  • Fixed a bug in DMA from v0.390
  • Fixed some sprite windowing clipping bugs
  • Fixed an OAM overflow bug. Thanks to DJRob for some help on this!
  • Fixed a save state bug where running a game off the commandline and having a save directory specified prevented more than 1 save state
  • Fixed a transparency bug from v0.390

v0.390 - April 11, 1998

  • Fixed a bug which caused 320x240x65536 to display incorrectly on video cards with an 16-bit ARGB setting
  • Fixed a minor screen add/sub bug
  • Fixed a minor sprite priority bug
  • Fixed a BG3 priority bug in BG Mode 0
  • Fixed a color window addition bug
  • Fixed a minor VIRQ enable bug
  • Swapped The Cursor Button and Autofire Switch in Super Scope
  • Fixed a joystick read timing bug
  • Sound volume register returned an invalid value. Now fixed.
  • Added some dword alignment to some variables. Thanks to Marius Fodor for this info!
  • Implemented 64k sram files
  • Implemented Sprite VRAM address changing in the middle of the screen. Should fix some games such as Lufia 2
  • Added some hacks to get some games working better
  • DSP : Fixed a divide by 0 bug when key on is set without any sound variables initialized
  • Increased default cycles executed in FastROM.
  • Added ZSNES.FAQ . Read this if you have troubles!
  • Added a key to disable/enable Windowing. Press 9 to activate this.
  • Implemented EAGLE algorithm in 640x480x256 video mode. Use -y to enable. Thanks to A CoolMan for the algorithm! Later on, we'll implement his code which has MMX acceleration!
  • Implemented FPU copy. Use -o to enable. Used only when copying buffer to video in 320x240 vesa2 modes.
  • Re-wrote Windowing routines for speed and expandability
  • Added Dual Windowing on BGs in all logic modes
  • Added Dual Windowing on Sprites
  • Added some minor stuff to the header displayer
  • Added partial offset per tile mode. (Mode 2/Vertical/8x8). Thanks to the feenix65 for some help on this! Implementation still a bit buggy.
  • Sorry, but memory requirements had to increase by a bit.
  • Fixed a tile graphics wrapping bug
  • Clean up and optimised 16-bit graphics code
  • Fixed up a display bug when switching from 239 to 224 y resolution
  • Optimised some video processing code. Thanks to Crash_Man for the help!
  • Minor optimisations to the 65816
  • Improved color intensity in the back area
  • Fixed a sram directory bug where the save state didn't save in the save directory when the game is specified from the command line
  • Fixed a keyboard bug when left-shift is selected as a key. Thanks to Pharos for help on this!
  • Some DMA speedups
  • Some optimisations to OAM/VRAM write
  • Sorry, but SuperFX emulation is disabled for this public version.

v0.305 - February 12, 1998

  • Fixed a snes ppu multiplication bug. Thanks to Lord Esnes!
  • Hopefully fixed 6-button joystick support.
  • Fixed a little memory overflow bug which caused some games to not work
  • Forgot to clear NMI wait substitute variables when another game is loaded from the GUI
  • Changed sound processing engine back to v0.297. If for any reason you want to go back to v0.300 sound engine, use -x as a command line
  • Added Cursor Mode Button to the Super Scope. Never thought it was necessary until recently. Use the =/+ key.

v0.300b - February 10, 1998

  • Fixed a bug that causes sidewinder support to crash.

v0.300 - February 9, 1998

  • Fixed a 65816 wrapping bug
  • Added Super Scope Emulation! (Press 7 beyond mouse)
  • Some minor touches to the GUI
  • Manually calculated RGB bit lengths when using 16-bit modes
  • Fixed another bug when loading 48mbit images from the GUI
  • Sped up the execution loop when sound is enabled
  • Implemented NMI wait substitute for speed
  • Added some extra vesa2 routines to help some video cards with ARGB format of 1:5:5:5, however interpolation won't work for those at the moment. Thanks to Dark Force for helping out on this one!
  • Implemented 512x384 VESA2 resolution for both 8 and 16 bit
  • Implemented Sound Mute and Reset
  • Implemented Joystick Remapping. Edit ZSNES.CFG to access this.
  • Fixed and sped up 6 button joystick support
  • Fixed 2 2-button joystick support
  • Hopefully fixed 2 sidewinder support
  • Fixed an overflow sound bug

v0.297 - January 31, 1998

  • Fixed a bug when loading 48mbit images from the GUI
  • Fixed some crashing bugs by just adding some zero space. Very weird bug!

v0.296 - Not Released?

  • Fixed up Cheat Menu in 16-bit color mode
  • Changed SPC700 skipper back since it was causing problems in certain games
  • Added Multiple Snapshot files
  • Fixed a minor loading bug
  • Fixed 16-bit color full add/sub conversion table when video is in BGR format
  • Fixed some fixed color screen add/sub bugs
  • Supported .SWC format in the GUI

v0.295 - January 29, 1998

  • Compiled under a newer version of WDOSX. This should help fix some VESA 2 problems.
  • Fixed multiple SPC700 bugs
  • Added a command line to force either NTSC (-t) or PAL (-u) timing
  • Added a command line to force 8-bit sound on (-8)
  • Zsnes.cfg is now loaded from the directory where zsnes.exe is located
  • Zsnes.cfg now re-writes itself when zsnes exits
  • Reduced zsnes.exe filesize
  • The IRQ's are now more stable. This should help fix some crashing/rebooting problems under dos. Thanks to Sardu for some help on this!
  • Fixed some VRAM accessing bugs
  • Several fixes to the sound DSP
  • Optimised SPC700 a bit
  • Implemented primitive Mode 5, 512 horizontal resolution. To get full potential of this mode, use 640x480 resolutions except for interpolated/nonscanline mode.
  • Improved 65816 <-> SPC700 communication
  • Slightly improved sound skipper
  • Fixed a directory changing bug
  • Implemented Scanlines for 640x480x256 video mode
  • Added a temporary command line to enable sound compression buffering (-Q)
  • Added a extra menu which pops out when you press F1
  • Added snapshot feature. Press F1 and select Save Snapshot ZSNES saves 256 color under image.pcx and 65536 under image.bmp.
  • Added FPS feature. At the moment, it only works when auto frame rate is used.
  • 65816 bugfix : x flag is supposed be used in MVN/MVP
  • Fixed up color addition/subtraction clipping a bit
  • Added Scanlines, Interpolation, Enterskip, and Force 8-bit sound in zsnes.cfg
  • GUI now saves the loading directory
  • Added a separate save directory feature in zsnes.cfg.
  • SPC700 bugfix : fixed mem.bit addressing mode. Thanks to Phoenix for this info!
  • Fix up a bug where more memory was cleared than needed in 256 color video memory processing
  • Optimised video memory clearing in 65536 color mode
  • Minor optimisations to the 65816/SPC700
  • Implemented Mode 7 Tile #0 Repetition
  • Rewrote most of the Mode 7 routines for speed
  • Fixed a 65536 color Mode 7 bug where the background wasn't cleared properly
  • Added Pro Action Replay, Gold Finger,and Game Genie cheat code support
  • Optimised Memory/Register accessing routines
  • Used a newer version of Sidewinder driver. Should fix some problems and also support 2 sidewinder pads (not tested yet). Thanks Robert! Also, thanks to Sardu for helping to get it to work right!
  • Whoops! 256 Color palette was set when GUI is exited in 16-bit mode. Hopefully fixed now.
  • Added the ability to Clear/Disable/Enable cheat codes through the menu.
  • Optimised Graphics Decompression Routines. Thanks to Nerlaska for this info!
  • A Bunch of other Minor Bugs Fixed.

v0.270 - December 25, 1997

  • Properly cleared memory when loaded off of the GUI
  • Implemented realtime adsr/gain switch. Special thanks to Sardu for help on this!
  • Fixed up a VESA 2 error message
  • Temporarily disabled Sound Compress buffering till we can get the bugs out.
  • Volume fixes to the sound DSP
  • Fixed up > 16mbit LoROM support
  • Added partial 48mbit ROM support (no games seems to work yet + 9MB mem required)
  • Fixed a SRAM Memory Map Bug
  • Fixed a bug in old style joystick read
  • Disabled sram save using tilde key. Instead, enter/exit the GUI since it also saves the sram.
  • Added panic key which turns back on all sound channels and backgrounds. Press 6 to activate this.
  • Added snes mouse support! Use 7 to switch between keyboard and mouse. Thanks to Y0SHi for info on this!
  • Panic key now turns off mouse when mouse is enabled
  • Fixed a minor IRQ bug
  • Fixed a HDMA bug. Thanks to Lord Esnes for help on this!
  • Fixed a timing bug. Thanks to TaNdRuM for help on this!
  • Fixed up some Fixed color add/sub bugs
  • Implemented OBJ Name Base Select. Thanks to Y0SHi for info!
  • Windowing was off by 1 pixel. Now fixed.
  • Fixed Screen Add/Sub on back area
  • Added support for 4 and 6 button joysticks
  • Added support for sidewinder joypads
  • Fixed a VESA 2.0 bug. It should be more compatible now.
  • Implemented Interpolation for 640x480x65536 mode. Use -Y to enable.
  • Modified sound mixing code a bit
  • Added GUI disable in zsnes.cfg. Add this if you want to disable the GUI GUIDisable = 1
  • Implemented Directory Changing in the GUI
  • Fixed a bug where it crashed when loading some ROMs
  • Fixed an ADSR sustain bug. Thanks to Trepalium for help on this!

v0.201b - November 5, 1997

  • Fixed up Save State Selection bug

v0.201 - November 5, 1997

  • Fixed up PAL/NTSC detection when GUI is used
  • GUI now doesn't enter load when no files are found. Thanks to ScanT for reporting this!
  • Sped up execution loop a bit
  • Fixed up a major save state conversion bug. Old save states should work better now.

v0.200 - November 4, 1997

  • Reg$2137 was calculating the horizontal position incorrectly
  • Fixed up a looping bug in sound DSP. Thanks to EFX for some help on this!
  • Added Key to dump SRAM to Harddisk (tilde key, ~) during game
  • Fixed up gain sound effects
  • Fixed a couple of SPC timer bugs
  • Added Stereo Sound! (Use -Z)
  • Added some precision to the DSP (this seemed to have slowed emulation down)
  • Changed Real Time State Save Format. However, ZSNES will automatically convert from an older format. Some problems may come up because of the many changes in the dsp.
  • Fixed up a sprite ordering bug. Thanks to Y0SHi!
  • Added Scanlines (Use -N) Only available for 256x256/640x480x65536
  • Adjusted SPC timers
  • Fixed up BG Mode 0 display
  • Fixed up a bug that crashes when hirom sram is accessed
  • Fixed up a VIRQ bug
  • Added a simple, yet effective dsp timer wait substitute. Seems to make many games run much faster with sound!
  • Fixed VRAM increment bug. Special thanks to Trepalium for this info!
  • Fixed up multiple SPC bugs
  • Player 2 was still reading the joystick even though keyboard was selected. This is now fixed.
  • Added VSync (-w). Thanks to Marius Fodor for the code! Please use -f 0 when using this.
  • Added a very simple GUI. Currently, it only loads, reset, and quit. Also, load cannot change the current directory.
  • Added -m to disable the GUI
  • Added Stereo to zsnes.cfg. Add this if you want to enable stereo : Stereo = 1

v0.182 - October 23, 1997

  • Small fix to a priority in bg4 drawing
  • Added TCALL and PCALL. Special Thanks to Gary of Snes9X!
  • Enabled the debugger (use the -d command line)

v0.180 - October 22, 1997

  • Move the whats new stuff to readme.txt
  • Forgot to remove the end of string marker so the new vesa modes didn't show in the previous version help
  • Fixed minor SNES PPU DMA bug
  • lowered volume again
  • Fixed a vesa 2 bug issue. Nothing major
  • Removed PCALL/TCALL. If anyone knows the implementation of these instructions, please tell us. Also, we will not accept any requests to put these back on unless the info the found. Thanks.
  • Modified SPC700 cycle timing.
  • Added code that properly deinits sound blaster auto-init mode
  • Moved sound blaster interrupt code a bit
  • Added Gamma Correction (use -g # in the command line)
  • Added what the default keys are in the readme.txt (We should have done this in the first release. Oh well =) )
  • Added a new command line that can modify the % of clock cycles executed. ZSNES currently is modified so that 100% runs as many games as possible so it is strongly recommended that you do not set this. But to modify this, use -p # in the command line.
  • Hopefully fixed up sprite BG layering priorities and background priorities to the correct way. Thanks to Y0SHi for this info!
  • Fixed up key ordering in zsnes.cfg. Thanks to Michael and Aquis for reporting this! If zsnes.cfg already exists, change the button order to : B, Y, A, X, L, R
  • Fixed up set blaster detection.
  • SPC700 : Fixed up a minor flag setting bug in pop psw

v0.170 - October 16, 1997

  • Fixed crashing bug when 8000Hz sound is selected (divide by 0 problem)
  • Forgot to add code to support Sound Blaster irqs greater than 7
  • Changed 65816 timing a bit. (should help compatibility a bit)
  • Fixed a bug in 65816 stack routines. Special Thanks to Alucard for reporting this!
  • Somewhat modified sound decompression routines
  • Somewhat sped up Mode 7
  • Fixed a minor screen add/sub bug in non-repeating mode 7
  • Added increment by 8 vram access registers
  • Video Modes should now clear the screen when init
  • ZSNES now automatically creates a default .cfg file when one is missing
  • Forgot to implement save/load state messages in 16-bit. It's there now.
  • Added a new command line : -b. This disables sound compression buffering. There is a noticeable slowdown, but this should reduce static.
  • Added sound compression buffering disable in the .cfg file. If you have an old .cfg file already, manually add this string at the end if you want to disable sound buffering : SoundBufDisable = 1
  • Added 640x480 modes for both 8 and 16 bit. VESA2 is still required and these modes are much slower too. This seems to still not work on various video cards. There's probabily a bug in VESA2 detection.
  • Fixed a sprite layering bug.
  • Reduced sound volume to prevent overflows. This seems to make the sound better, but the pitch calculations are still incorrect due to SPC bugs.
  • Fixed a screen sub bug. Thanks to Barubary!

v0.150 - Initial Release - October 14, 1997

The following are implemented :

  • complete 65816 instruction set (bugs still left)
  • SRAM support
  • LoROM and HiROM support
  • SlowROM and FastROM support
  • Line by line graphics engine
  • Graphic Modes 0,1,2,3,4,5,6,7
  • 8x8, 16x16, 32x32 and 64x64 sprite support (flipped in all directions)
  • Mosaic effects
  • 8x8 and 16x16 tiles
  • 32x32,64x32,32x64,64x64 tile modes
  • Full DMA support
  • Full HDMA effects for wavy backgrounds, interesting mode 7 effects, etc.
  • Mode 7 rotating and scaling effects
  • Single Windowing Routines
  • BG priorities (still needs some work)
  • Sprite Priorities (still needs some work)
  • Add/sub of back area
  • HIRQ/VIRQ/NMI Interrupts
  • Support for most snes file formats
  • Multi file format support (.1,.2,.3,A.,B.,C.)
  • 16-bit graphics support
  • PAL timing support

The following are present in sound :

  • 16bit digital sound
  • SPC700 Sound CPU (bugs still left)
  • DSP Sound Processor
    • ADSR volume effects
    • GAIN volume effects

Following are present in 16-bit graphics mode :

  • Palette changing in the middle of a screen
  • Screen Addition (full and half)
  • Screen Subtraction (full)
  • Fixed Color Addition/Subtraction
  • Window clipping for Fixed Color (still needs work)

The following are the features present in ZSNES :

  • Game State Save (F2=Save, F3=Select, F4=Load). Warning : A state file takes 200 kbytes of HD space!
  • Auto frame rate to give you constant Super Nintendo speed up to 12 frame skips
  • configuration file support (zsnes.cfg)
  • 2 player support w/ Joystick and Gamepad support

The following features are missing :

  • DSP features such as noise, echo, and pitch modulation
  • Mode 7 horizontal flip and color repetition
  • Screen Subtraction (half)
  • Interleaved ROM formats
  • A few VRAM accessing modes
  • Dual Windowing support (not sure if it's worth implementing this)

The following will probabily never be implemented (but who knows...) :

  • 512 snes horizontal resolution
  • 448/480 snes vertical Interlaced resolution
  • Raster Effects (Scrolling location change in the middle of a horizontal line. There might be a way to get through some of this)
  • EXTBG mode for mode 7 (I don't know any games that uses this)

What will not run :

  • Super FX games such as Star Fox, Yoshi's Island, etc.
  • DSP games such as Mario Kart, Pilotwings, etc.
  • Games with other special chips such as Megaman X2 and X3
  • Games that have a unique sound checking routine (if sound is disabled)
  • Games which doesn't have a valid header (use -L or -H to get it working)
  • Games that hit a severe bug in the 65816/PPU/SPC700/DSP routines
  • Games that require special timing

Footer


Getting Support - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
    • APIs and Utilities
    • Contact Information
    • Known Issues
    • Filing a Bug Report
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

Getting Support

APIs and Utilities

The following utilities are referenced throughout this documentation to help accomplish various tasks. There is a link to each utility and a short description of its purpose.

DirectX

DirectX is an API required for running ZSNES in Windows.

SDL

SDL (Simple DirectMedia Layer) is an API required for running ZSNES on UNIX-like operating systems.

Scitech Display Doctor

Scitech Display Doctor is a utility that provides drivers for many VGA and SVGA video cards. It can provide support for VESA VBE 2 on some video cards that may not normally support it.

The link above directs you to Scitech's FTP site. regcodes.txt provides registration codes for the two different versions of SDD offered, v5.3 and v6.53. The newer version supports hardware acceleration and more cards. If you are in a DOS-only environment, you should use one of the -d.zip versions. If you are in a Windows+DOS environment, use one of the -w.exe versions. univbe67.exe is a stand-alone VESA VBE driver, and does not provide any of the other SDD utilities.

Note: SciTech Software no longer offers support for this software.

NSRT

NSRT - Nach's SNES ROM Tools. NSRT, the most advanced SNES ROM tool to date, provides the ability to check, alter, retrieve info from, verify, fix, and organize SNES ROMs.

NSRT has several important uses in relation to ZSNES:

  • You can use it to scan your ROMs and show detailed information about them. This information will tell you whether or not the ROM is a good dump.
  • It can deinterleave your SuperFX ROMs so that ZSNES can load them.
  • It can add special NSRT headers to your ROMs, which will allow ZSNES to automatically enable special controllers for games that need them.
  • You can use NSRT to compress your ROMs using a special, custom-built compression format called JMA. This is an archive format designed by Nach based on LZMA. When used on SNES ROMs it is faster, and creates smaller files than 7Zip.

NSRT is primarily a command-line program, although a graphical front-end is available. The ZSNES Documentation Team has written a supplementary guide to NSRT that covers some of the functions listed above.

Contact Information and Links

The following is a list of all official ZSNES websites and resources:

  • ZSNES Home Page
  • ZSNES Project Page hosted by BountySource.
  • ZSNES Documentation on the Web
  • ZSNES Documentation Project Page hosted by SourceForge.net.
  • ZSNES Message Board

In your quest to solve whatever problem you may be having with ZSNES, or to learn more about ZSNES, please first read all of this official documentation.

The ZSNES Message Board is the primary place to receive help about ZSNES, after you have read through this entire documentation. It is also an interesting Internet community in its own right. Asking for ROMs (or asking for games, a link to a ROM site, or where to find ROMs/games) is forbidden! Be sure to also read the RULES!

Known Issues

  • 65816 lacks correct timing. Although ZSNES bases the timing on a variable cycle/instruction, it does not deduct correct values (such as 16-bit instructions should deduct 1 more cycle than 8-bit instructions). 100% cycles of ZSNES isn't 100% cycles of a SNES because of that. This means that a lot of games either won't run or will produce horrible displays. Sometimes, adjusting the % of execution can fix those problems. This is all due to inaccurate documentation used when the ZSNES 65816 core was written. Fortunately, there are currently ongoing efforts to rewrite the ZSNES core.
  • Some games sometimes tend to not display things properly because of graphic features that aren't implemented yet.
  • The Sound DSP chip still has its bugs (not many though). Additionally, no one knows the exact timing of the SPC700 chip.

Filing a Bug Report

Before you file a bug report:

  • Please verify that you have a good ROM. You should use NSRT to do this. You can find detailed instructions on how to use NSRT to verify your ROM(s) in this section of our NSRT Guide.
  • Make sure you are using the current release of ZSNES. You can download the latest version from the ZSNES home page or from the ZSNES SourceForge Project Files page. If you were using an old version of ZSNES, and the problem goes away when you use the new version, please do not report the bug.
  • If the bug still exists in the latest official release of ZSNES, please try again with the latest WIP release of ZSNES. These are unofficial versions, compiled from SVN source, and are updated somewhat frequently. They are available at ipher's WIP Page.
  • If possible, confirm whether the bug occurs on real hardware (as in, play the game on a real console).

Bug reports should be submitted in the Bug Reports/Feature Requests section of the ZSNES Message Board. Before reporting, please use the board's search function to see if your bug has already been reported.

When making a bug report, please include the following information:

  • Version (i.e., v1.51) and port (i.e., Windows, DOS, or SDL) of ZSNES you are using.
  • Detailed ROM information:
    • You must post the NSRT information about your ROM when reporting a bug. Please see the Verifying a ROM to make a Bug Report section of our NSRT Guide for detailed instructions.
  • Detailed system specifications:
    • At minimum, you must tell us what operating system you are using and what version of DirectX or SDL you are using.
    • If your issue is related to performance (as in, ZSNES is too slow), also include the specs for your processor, RAM, video card, etc.
  • Detailed description of the bug:
    • A detailed description of the bug is important so that others can try to reproduce it.
    • Screenshots are highly recommended, and save states made before (or in some cases, during) the bug's occurrence are also greatly appreciated.
    • If you know of a previous version of ZSNES that ran the game properly, or if you know of another game that acts similarly, please let us know.
    • It may also be helpful to test the game in other SNES emulators and tell us the resulting behavior.

Footer


About - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
  • History
  • About
    • ZSNES
    • Documentation
    • Credits
  • License
  • NSRT Guide
  • ZSNES.com

About

About ZSNES

ZSNES is a SNES emulator that has been worked on since 1997. Originally programmed by zsKnight and _Demo_, the project has since then attracted a number of new developers and contributors.

On April 2, 2001, the ZSNES project was GPL'ed and its source released to the public. Written in a mixture of x86 assembler, C, and C++, ZSNES currently runs on Windows, DOS, x86 versions of Linux and FreeBSD, x86 Macintosh computers, and the Microsoft Xbox.

Donations

If you enjoy using ZSNES to re-live and enhance your experiences with the Super Nintendo, please consider making a donation to support further development.

You have two options when making a donation. You can choose to make a donation through the ZSNES SourceForge Project Donation Page: Donate to ZSNES through SourceForge.

Alternatively, you can send money to the ZSNES creator's PayPal account: Donate directly to zsknight, creator of ZSNES.

About the Documentation

The ZSNES Documentation Project was started by RichardC in an attempt to update and reorganize all of the ZSNES documentation into an easy to read, easy to access collection. It made its public debut upon the release of ZSNES v1.40. It is officially available in HTML, CHM, and text formats.

If you have any suggestions or corrections that you would like to submit, feel free to let us know at our forum on the ZSNES Message Board.

RichardC would like to give a special thanks to Nach and the ZSNES community for all the help and support that they have given to him and the project.

Credits

Founding Developers

  • zsKnight
  • _Demo_

Current / Active Developers

  • pagefault - primary core developer, primary Win port developer.
  • Nach - primary non-core developer, mostly works on significant back-end overhauling and large new features.
  • grinvader - primary ASM to C porter, primary Unix build maintainer, many GUI improvements and other, and power of no pants.
  • Jonas Quinn - primary bug fixer, also video code contributor.
  • ipher - ZSNES GUI expert, WIP distributor.
  • Deathlike2 - minor feature adder, also an ASM to C porter.

Assistant Coders

  • hpsolo
  • Pharos
  • Siloh (a.k.a. Stainless, a.k.a. randilyn)
  • StatMan
  • teuf
  • theoddone33

Contributors (in alphabetical order)

  • aaronl
  • Aerdan
  • amit
  • anomie
  • BRPXQZME
  • byuu
  • Diablo-D3
  • EvilTypeGuy
  • hector
  • Khan Artist (a.k.a. Noxious Ninja)
  • kode54
  • Kreed
  • MaxSt
  • MKendora
  • Neviksti
  • Overload
  • prometheus
  • relnev
  • snes6502
  • TRAC
  • zinx

Documentation Writers/Contributors

Contributors are listed loosely based on their dates of contribution.

  • RichardC - founder of the ZSNES Documentation Project. First active administrator. He had the dirty job of doing the initial conversion of the docs into HTML.
  • Nach - programmer extraordinaire, and knows ZSNES very well. He helps a lot in documenting the obscure things we writers don't know about.
  • LDAWG - updated v1.40 changelog, based on a 2 year summary by Nach, as well as another 6 months of developer notes.
  • kevman - helped with the v1.40 FAQ updates.
  • xamenus - joined the project shortly after RichardC's initial release, and made many grammar fixes and updated the content. Combined the three separate, port-specific documentations into one. Still contributes some content from time to time.
  • Noxious Ninja - manpage expert. No longer active in the emulation "scene", he always had something useful to contribute.
  • Clements - maintainer of the CHM file. Also assists with coding and content.
  • AspiringSquire - designer and maintainer of the TXT version of the docs; occasionally contributes content. Also an expert with grammar and vocabulary corrections.
  • Jipcy - current active administrator and mark-up chief. Manages and contributes to all parts of the docs.
  • Jonas Quinn - mainly helps in super-optimizing the images.
  • Deathlike2 - ZBoard tech help expert. Also makes many suggestions/corrections to the docs.

Special thanks to Radio. He designed the ZSNES.com main page layout, from which we stole this design for the HTML docs. Also special thanks to Roman Rudenko, for finding the elusive "display:inline" fix for floated items in IE.

Also thanks to SnesCentral for providing some info!

Thanks

All ports of ZSNES use NASM v0.98+, GNU Make, zlib, libpng, and JMAlib to compile, link, compress, decompress, and execute.

In addition to the above, ZSNES Win uses Visual C++ 2003 (or MinGW), DirectX 8, UPX, and ManyMouse; ZSNES SDL uses GCC, SDL v1.20, and ManyMouse; and ZSNES DOS uses DJGPP and CWSDPMI.

Thanks to those who produced these fine programs!

Special Thanks to:
  • wnelson; without him, ZSNES would have never existed!
  • Y0SHi for his excellent SNES docs, his help, and his excellent support!
  • Ashley, Barubary, CyberWarriorX, DCX, DooMStalK, Fanwen, GreenImp, Hucard, Kaiden, PolestaR, Stalphos Knight, Star Creator, TeleKawaru, the people on the ZSNES IRC channel, and the regulars of the ZSNES message board!
  • All of our beta testers for being a great help!
  • The MAME team; info on 256x256x256 scanlines mode is from the MAME source!
Also Thanks to:
  • The_Teach of Snes9x for some great info and the nice chats!
  • Trepalium of Snes9x for some great info and help!
  • Gary of Snes9x and Steve Snake of Kega for being the source of info for sound decompression!
  • Gary of Snes9x for being the source of info for TCall/PCall and also for lots of help!
  • MrGrim for his great support!
  • Crono for info on Sound Blaster programming, surround sound, sound interpolation, and other sound stuff!
  • Aquis for the ZSNES logo!
  • Alucard for helping us with an issue in the 65816!
  • Vertigo for making a compatibility list!
  • EFX for being a great supporter and also giving a lot of help and stuff!
  • Zophar for being a great supporter and also maintaining the mirror site!
  • Chris Hickman for redesigning the ZSNES web page!
  • CSoft for (previously) hosting our web page!
  • Marius Fodor for the code for VSync, Sidewinder, Gamepad Pro, and some optimization info!
  • Sardu for some great info and help!
  • Lord ESNES for some great help!
  • Robert Grubbs for the Sidewinder info!
  • Nerlaska for some useful info on optimizing and also for some help!
  • Diskdude for writing SNESkart which we used for the info on cheat codes!
  • DarkForce for some great help!
  • Pharos for some keyboard coding help!
  • Ivar and Gary of the Snes9x team for all their great help, which includes their SuperFX info and code, DSP-1 info, info on interleave formats (HiROM and SuperFX), offset per tile mode, FIR filter, and some insights on SPC700 and HDMA bugs!
  • WolfWings ShadowFlight for help on several issues of NASM!
  • Wildfire for some help!
  • A CoolMan for the algorithm for EAGLE!
  • Neill Corlett for some info on the .ips format and also helping out a lot on improving the sound engine!
  • Kreed for the 2xSaI and Super Eagle source codes!
  • Markus Oberhumer and Laszlo Molnar for the UPX compression utility.
  • Jean-loup Gailly, Mark Adler, and Gilles Vollant for the unzip routines!
  • kode54 for the low pass filter routines!
  • Andy Goth for some help on the design of the key combination engine!
  • Yamaha of XYZZ (Scott Scriven) for his water effect code.
  • ipher for compiling and releasing WIP builds!
  • cdbsi for the ZSNES icons!
  • The Dumper for lots of help with special chips.
  • snes6502 for the Xbox port!
  • hector and BRPXQZME for helping to port ZSNES to Mac OS X!
  • The NSRT Team, for their excellent utility, JMA compression, NSRT headers, and a great database!
  • All those people who contributed by either updating the docs, helping us, supporting us, or reporting bugs!

The changelog contains innumerable credits to people for their contributions or individual fixes. Many of them are not listed on this page.

Also thanks to all those whom we forgot!

Also, good luck to all those who are writing emulators, especially those who are writing SNES emulators, including Snes9x, SNEeSe, Super Sleuth, and bsnes!

Footer


GNU General Public License - ZSNES Documentation

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

GNU General Public License

Table of Contents

  • GNU GENERAL PUBLIC LICENSE
    • Preamble
    • TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    • How to Apply These Terms to Your New Programs

GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

  1. a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
  2. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
  3. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

  1. a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
  2. b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
  3. c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.

Footer


ZSNES Documentation Index

The ZSNES Logo

  • Index
  • Readme
  • GUI
  • Netplay
  • Advanced Usage
  • Games
  • FAQ
  • Getting Support
  • History
  • About
  • License
  • NSRT Guide
  • ZSNES.com

Index

  • Index
  • Readme
    • Disclaimer
    • Current Progress
    • Extra Features
    • System Requirements
    • Installation
    • Basic Usage
    • Default Keys
    • Save States
    • Movies
    • IPS Patching
    • Cheat Codes
    • Files
  • GUI
    • Game Menu
    • Quick Menu
    • Config Menu
    • Cheat Menu
    • Netplay Menu
    • Misc Menu
    • F1 Menu
    • Save Slot Chooser
  • Netplay
    • Things To Know
    • Recommendations
    • Simple Instructions
    • Loading a Game
    • Configuring
    • Troubleshooting
  • Advanced Usage
    • Movie Dumping
    • Configuration Files
    • Debugger
    • KitchenSync
    • Command-Line
  • Games
    • ROMs
    • Compatibility
    • Special-Chip Games
    • Special Cartridges
    • BS-X (Satellaview)
    • Super Gameboy
    • Individual Game Issues
    • Games Supported by ManyMouse
    • Multiplayer List
  • FAQ
    • Universal
    • Win Port
    • SDL Port
    • DOS Port
  • Getting Support
    • APIs and Utilities
    • Contact Information
    • Known Issues
    • Filing a Bug Report
  • History
  • About
    • ZSNES
    • Documentation
    • Credits
  • License

Footer